【问题标题】:Take string argument from command line?从命令行获取字符串参数?
【发布时间】:2012-10-03 18:18:53
【问题描述】:

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

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

【问题讨论】:

    标签: python arguments


    【解决方案1】:

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

    我认为您需要实际解析参数:

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

    然后文件名将可用args.filename

    【讨论】:

      【解决方案2】:

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

      示例脚本:

      import sys
      print sys.argv
      

      调用它:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          试试 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
          

          替代库

          click arg 解析库。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-10-06
            • 2015-04-07
            • 2021-12-04
            • 2019-09-16
            • 1970-01-01
            • 2014-01-03
            • 2019-12-24
            • 2019-03-21
            相关资源
            最近更新 更多