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

时间:2020-08-11 10:25:23

标签: python bash user-input

我想针对不同城市和每个城市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

2 个答案:

答案 0 :(得分:0)

您需要阅读传递给解释器的参数。这些在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用管道输送输入。

答案 1 :(得分:0)

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