繁体   English   中英

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

[英]Run command line arguments in python script

我有一个从命令行运行的程序,就像这样

python program.py 100 rfile

我怎样才能编写一个新的脚本,以便不用仅仅使用'100'参数运行它,我可以连续运行它,如[50,100,150,200]这样的参数列表?

编辑:我问的原因是我想记录'program.py'如何用不同的参数执行。

如果您创建这样的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

您可以使用Devrim的shell方法,也可以修改脚本:

如果您的原始脚本像这样工作:

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

我在猜你想要什么。 请澄清这是否正确。

你可以使用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作为列表。

如果你想在python脚本中执行此操作,可以使用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()

这些活动通常在Jon-Eric 解释main职能的主持下进行。

如果从shell调用生成的脚本

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 2.7的标准库中; 对于早期的pythons,它可以以正常方式作为模块安装,例如通过easy_install argparse ,或者作为脚本所属的包的依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM