在Python脚本中运行命令行参数

5 投票
4 回答
19532 浏览
提问于 2025-04-16 05:31

我有一个程序,可以通过命令行这样运行:

python program.py 100 rfile

我想写一个新的脚本,这样我就可以用一个参数列表,比如[50, 100, 150, 200],连续运行它,而不是只用'100'这个参数。

补充说明:我之所以这样问,是因为我想记录'program.py'在不同参数下的执行情况。

4 个回答

4

你可以使用 Optparse

这个工具让你可以像这样使用你的程序: 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 当作一个列表来使用。

6

你可以使用Devrim的方法,或者你可以修改一下你的脚本:

如果你原来的脚本是这样工作的:

import 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

我在猜测你想要的是什么。如果这不是你想要的,请告诉我。

8

如果你创建一个这样的bash文件

#!/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

撰写回答