我使用python创建我的项目设置设置,但我需要帮助获取命令行参数。

我在终端上试了一下:

$python myfile.py var1 var2 var3

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


当前回答

我强烈推荐Python 2.7及更高版本附带的argparse。

argparse模块减少了样板代码,并使代码更加健壮,因为该模块处理所有标准用例(包括子命令),为您生成帮助和用法,检查和清除用户输入—所有您在使用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的输出。

2

其他回答

我还能想到一些其他的东西。

正如@allsyed所说的sys。Argv给出了一个组件列表(包括程序名),所以如果你想知道通过命令行传递的元素的数量,可以使用len()来确定它。基于此,如果用户没有传递特定数量的参数,您可以设计异常/错误消息。

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

我强烈推荐Python 2.7及更高版本附带的argparse。

argparse模块减少了样板代码,并使代码更加健壮,因为该模块处理所有标准用例(包括子命令),为您生成帮助和用法,检查和清除用户输入—所有您在使用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的输出。

2

你可以使用sys。Argv以列表形式获取参数。

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

sys.argv[i]  

其中I是index, 0会给你正在执行的python文件名。之后的任何索引都是传递的参数。

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 

你可以使用"argparse"通过键访问参数。

假设我们有这样的命令:

python main.py --product_id 1001028

要访问参数product_id,我们需要先声明它,然后再获取它:

import argparse


parser = argparse.ArgumentParser()
parser.add_argument('--product_id', dest='product_id', type=str, help='Add product_id')
args = parser.parse_args()

print (args.product_id)

输出:

1001028