【问题标题】:How do I pass arguments via bash to Python when running a script运行脚本时如何通过bash将参数传递给Python
【发布时间】:2014-12-25 16:06:08
【问题描述】:

从 Bash 运行 python 脚本时如何将参数传递给它?

python somepythonfile.py arg1 arg2

【问题讨论】:

  • 您提供的命令有什么问题?
  • args 被视为我传递给 python 的一部分。我需要从脚本中访问的 args。

标签: python bash arguments


【解决方案1】:

正如其他人所指出的,您可以通过 sys.argv 获得对 args 的原始访问权限

对于更复杂的参数处理,如果制作命令行脚本,您可能需要查看 argparse 模块:

https://docs.python.org/2/library/argparse.html#module-argparse

(来自文档...)

例如,考虑一个名为myprogram.py 的文件,其代码如下:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', help='foo help')
args = parser.parse_args()

从命令行:

$ python myprogram.py --help
usage: myprogram.py [-h] [--foo FOO]

optional arguments:
 -h, --help  show this help message and exit
 --foo FOO   foo help

【讨论】:

    【解决方案2】:

    正是你所拥有的。您可以通过sys.argv访问它们

    #!/usr/bin/python
    
    import sys
    
    print 'Number of arguments:', len(sys.argv), 'arguments.'
    print 'Argument List:', str(sys.argv)
    

    输出:

    Number of arguments: 3 arguments
    Argument List: ['somepythonfile.py', 'arg1', 'arg2']
    
    • 参数 0 (sys.argv[0]) 是脚本的名称
    • 参数 1 到参数 N (sys.argv[1] ... sys.argv[N]) 是传递的参数

    无耻地取自this example

    【讨论】:

      【解决方案3】:

      使用 sys.argv,它是一个包含传递给脚本的参数以及文件名的列表。

      # test_prog.py
      from sys import argv
      
      print argv[0] # test_prog.py
      if len(argv) > 1: # check that we have at least 1 argument
          print argv[1]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-29
        • 2019-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-30
        • 2014-10-04
        • 1970-01-01
        相关资源
        最近更新 更多