从Python命令行获取字符串参数

Kre*_*ade 6 python arguments

我需要在运行Python脚本时使用可选参数:

python3 myprogram.py afile.json
Run Code Online (Sandbox Code Playgroud)

要么

python3 myprogram.py
Run Code Online (Sandbox Code Playgroud)

这就是我一直在尝试的:

filename = 0
parser = argparse.ArgumentParser(description='Create Configuration')
parser.add_argument('filename', type=str,
                   help='optional filename')

if filename is not 0:
    json_data = open(filename).read()
else:
    json_data = open('defaultFile.json').read()
Run Code Online (Sandbox Code Playgroud)

我希望将文件名存储在名为"filename"的变量中,如果提供的话.显然这不起作用.有什么建议?

dm0*_*514 8

请仔细阅读教程.http://docs.python.org/howto/argparse.html

我相信你需要实际解析这些论点:

parser = argparse.ArgumentParser()
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

然后文件名将可用 args.filename


Jun*_*uxx 6

检查sys.argv。它给出了一个包含脚本名称和任何命令行参数的列表。

示例脚本:

import sys
print sys.argv
Run Code Online (Sandbox Code Playgroud)

调用它:

> python script.py foobar baz
['script.py', 'foobar', 'baz']
Run Code Online (Sandbox Code Playgroud)