6

运行 Python 脚本时,我需要一个可选参数:

python3 myprogram.py afile.json

或者

python3 myprogram.py

这是我一直在尝试的:

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()

如果提供了文件名,我希望将文件名存储在名为“文件名”的变量中。显然这是行不通的。有什么建议吗?

4

4 回答 4

8

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

我相信您需要实际解析参数:

parser = argparse.ArgumentParser()
args = parser.parse_args()

然后文件名将可用args.filename

于 2012-10-03T18:22:40.690 回答
7

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

示例脚本:

import sys
print sys.argv

调用它:

> python script.py foobar baz
['script.py', 'foobar', 'baz']
于 2012-10-03T18:22:29.440 回答
4

如果您正在寻找第一个参数sys.argv[1]就可以了。更多信息在这里

于 2012-10-03T18:22:34.277 回答
0

试试 argparse 的默认参数,它有据可查。

import argparse

parser = argparse.ArgumentParser(description='Create Configuration')
parser.add_argument('--file-name', type=str, help='optional filename', 
       default="defaultFile.json")

args = parser.parse_args()

print(args.file_name)

输出:

$ python open.py --file-name option1
option1

$ python open.py 
defaultFile.json

替代库

单击库进行 arg 解析。

于 2022-02-23T20:31:52.963 回答