猿问

如何编写 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


红糖糍粑
浏览 131回答 2
2回答

繁星淼淼

您需要读取传递给解释器的参数。这些在sys.argv.您还需要写入标准输出,sys.stdout. 您可以默认使用以下方式执行此操作print:import sysdef main(argv):    city = argv[1]    print(get_network_measure(city))def get_network_measure(city):    return 110if __name__ == '__main__':    main(sys.argv)您还可以通过管道输入使用sys.stdin.

慕斯王

Python 模块argparse为解析命令行参数提供了一个方便的功能:import argparsedef 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
随时随地看视频慕课网APP

相关分类

Python
我要回答