我有一个程序,可以通过命令行运行,如下所示:
python program.py 100 rfile
我该如何编写一个新的脚本,以便不仅可以使用'100'参数运行它,还可以连续使用参数列表,例如[50, 100, 150, 200]?
编辑:我之所以问这个问题,是因为我想记录'program.py'在不同参数下的执行情况。
我有一个程序,可以通过命令行运行,如下所示:
python program.py 100 rfile
我该如何编写一个新的脚本,以便不仅可以使用'100'参数运行它,还可以连续使用参数列表,例如[50, 100, 150, 200]?
编辑:我之所以问这个问题,是因为我想记录'program.py'在不同参数下的执行情况。
#!/bin/bash
for i in 1 2 3 4 5
do
python program.py $i rfile
done
然后对该文件执行chmod +x
命令,运行该文件时,它将按顺序运行以下内容:
python program.py 1 rfile
python program.py 2 rfile
python program.py 3 rfile
python program.py 4 rfile
python program.py 5 rfile
1 2 3 4 5
改为$@
,则可以在运行脚本时传递数字列表,例如the_new_bash_script 1 2 3 4 5
。 - intuited"$@"
,这样您就可以运行 the_new_script 1 2 "3 4" 5
。 - glenn jackmanimport sys
do_something(sys.argv[1], sys.argv[2])
def main(args):
for arg in args[:-1]:
do_something(arg, args[-1])
if __name__ == '__main__':
import sys
main(sys.argv[1:])
python program.py 50 100 150 200 rfile
python yourcode.py --input input.txt --output output.txt
当你有多个控制台参数时,这非常有用。parser.add_option("-i","--input", action="store", type="int", nargs=4, dest="mylist")
python program.py -i 50 100 150 200
为了访问输入,您可以将mylist用作列表。argparse
模块来接收一个整数列表(未经测试的代码):import argparse
parser = argparse.ArgumentParser()
parser.add_argument('rfile', type=argparse.FileType('r'))
parser.add_argument('numbers', nargs='+', type=int)
ns = parser.parse_args()
python the_script.py filename 1 2 3 4 5 6
ns.file
等于以读取方式打开的文件filename
,ns.numbers
等于列表[1, 2, 3, 4, 5, 6]
。
argparse
非常棒,甚至可以在使用--help
调用时为脚本及其选项打印出使用信息。您可以以太多的方式自定义它,这里无法解释,请阅读文档。argparse
已经是标准库的一部分;对于早期版本的Python,它可以像普通模块一样安装,例如通过easy_install argparse
,或者作为脚本所属包的依赖项。