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

How can write python code to take input from user via bash script

我想为不同的城市计算一些指标,每个城市计算 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