如何解决如何编写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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。