将命令行参数传递给python脚本

Pass command line argument to python script

本问题已经有最佳答案,请猛点这里访问。

我有一个文件.py,调用时我想把base_url传递给它,这样在运行python file.py base_url='http://google.com'时,base_url变量值可以是动态的。http://google.com的值可以直接用于file.py的执行。

我该怎么做呢?

谢谢


命令行参数存储在列表sys.argv中。sys.argv[0]是调用的命令的名称。

1
2
3
4
5
6
import sys

if len(sys.argv) != 2:
    sys.stderr.write("usage: {} base_url".format(sys.argv[0]))
    exit(-1) # or deal with this case in another way
base_url_arg = sys.argv[1]

根据输入格式的不同,base_url_arg可能需要进一步处理。


sys.argv

如何在python中使用sys.argv

对于解析作为"name=value"字符串传递的参数,可以执行如下操作:

1
2
3
4
5
6
7
import sys

args = {}
for pair in sys.argv[1:]:
    args.__setitem__(*((pair.split('=', 1) + [''])[:2]))

# access args['base_url'] here

如果您想更详细地分析命令行选项,可以使用argparse

这里有一个关于argparse的教程。