如何编写python代码以通过bash脚本从用户那里获取输入

问题描述

我想针对不同城市和每个城市5次计算一些度量。我需要通过bash脚本提供数据。

 #!/bin/bash 
 cities=('paris''helsinki' 'rome') 
 for city in "${cities[@]}" do
         for (( i = 1; i <= 5; i++ ))
         do
                 srun python3 random_graph.py  "$city" > "$city"/"city"_"$i".json
         done

完成

我这样写我的python代码:

 def get_network_measure(city):
        some code
 
 if __name__ == '__main__':
       city = input()
       result = get_network_measure(city)

但是我需要同时给出城市名称,而不是在第二步中通过input()函数给出城市名称。 我在bash中运行时需要这样的东西

python mycode.py paris

解决方法

您需要阅读传递给解释器的参数。这些在sys.argv中可用。

您还需要写入标准输出sys.stdout。您可以默认使用print进行此操作:

import sys

def main(argv):
    city = argv[1]
    print(get_network_measure(city))

def get_network_measure(city):
    return 110


if __name__ == '__main__':
    main(sys.argv)

您还可以使用sys.stdin用管道输送输入。

,

Python模块argparse提供了一种方便的功能来解析命令行参数:

import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('-c','--city',help = 'name of the city',required = True
                        )
                       
    args = parser.parse_args()
    
    result = get_network_measure(args.city)

在bash中,您必须这样做:

$ python mycode.py -c paris

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...