为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2023-05-16 15:03:08
我想为不同的城市和每个城市计算一些措施 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 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您需要读取传递给解释器的参数。这些在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.



查看完整回答
反对 回复 2023-05-16
?
慕斯王

TA贡献1864条经验 获得超2个赞

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


查看完整回答
反对 回复 2023-05-16
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信