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

新手上路,请多包涵

在运行我的 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()

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

原文由 Kreuzade 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 253
2 个回答

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

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

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

然后文件名将可用 args.filename

原文由 dm03514 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

示例脚本:

 import sys
print sys.argv

调用它:

 > python script.py foobar baz
['script.py', 'foobar', 'baz']

原文由 Junuxx 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题