代码之家  ›  专栏  ›  技术社区  ›  ParisNakitaKejser

如何在Python中访问命令行参数?

  •  280
  • ParisNakitaKejser  · 技术社区  · 15 年前

    我在终端上试过这个:

    $python myfile.py var1 var2 var3
    

    在我的Python文件中,我想使用所有输入变量。

    7 回复  |  直到 10 年前
        1
  •  483
  •   yiwei    9 年前

    Python tutorial explains it :

    import sys
    
    print(sys.argv)
    

    更具体地说,如果你 python example.py one two three :

    >>> import sys
    >>> print(sys.argv)
    ['example.py', 'one', 'two', 'three']
    
        2
  •  112
  •   Ryan M Jordan    15 年前
    import sys
    
    sys.argv[1:]
    

        3
  •  90
  •   Michael Dorner Satyanarayana    6 年前

    我强烈推荐 argparse 它与Python2.7及更高版本一起提供。

    这个 由于模块处理所有标准用例(包括子命令),为您生成帮助和用法,检查和清理用户输入,因此模块减少了锅炉板代码并使您的代码更加健壮,当您使用 sys.argv 接近。而且是免费的(内置的)。

    import argparse
    
    parser = argparse.ArgumentParser("simple_example")
    parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int)
    args = parser.parse_args()
    print(args.counter + 1)
    

    以及 python prog.py -h

    usage: simple_example [-h] counter
    
    positional arguments:
      counter     counter will be increased by 1 and printed.
    
    optional arguments:
      -h, --help  show this help message and exit
    

    为了 python prog.py 1

    2
    
        4
  •  53
  •   Charles P.    9 年前

    Python代码:

    import sys
    
    # main
    param_1= sys.argv[1] 
    param_2= sys.argv[2] 
    param_3= sys.argv[3]  
    print 'Params=', param_1, param_2, param_3
    

    调用:

    $python myfile.py var1 var2 var3
    

    输出:

    Params= var1 var2 var3 
    
        5
  •  23
  •   Rakete1111    10 年前

    你可以用 sys.argv

    如果需要访问单个元素,可以使用

    sys.argv[i]  
    

    哪里 i 0 将提供正在执行的python文件名。之后的任何索引都是传递的参数。

        6
  •  5
  •   lvadim01    9 年前

    如果你这样称呼它: $ python myfile.py var1 var2 var3

    import sys
    
    var1 = sys.argv[1]
    var2 = sys.argv[2]
    var3 = sys.argv[3]
    

    sys.argv[0] 它始终是当前的工作目录。

        7
  •  4
  •   Rohan    9 年前

    一些我能想到的额外的事情。

    另外,如果您正在寻找处理命令行参数的更好方法,我建议您查看 https://docs.python.org/2/howto/argparse.html