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