如何访问命令行参数?

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

我在终端上试了一下:

$python myfile.py var1 var2 var3

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

505473 次浏览

# EYZ0:

import sys


print(sys.argv)

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

>>> import sys
>>> print(sys.argv)
['example.py', 'one', 'two', 'three']

获取命令行参数只有

(不包括Python文件的名称)

import sys


sys.argv[1:]

[1:]是一个,从第二个元素(索引1)开始,一直到参数列表的末尾。这是因为第一个元素是Python文件的名称,我们想要删除它。

您可以使用sys.argv以列表的形式获取参数。

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

sys.argv[i]

其中i是索引,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

如果您像这样调用它:$ python myfile.py var1 var2 var3

import sys


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

与数组类似,您还有sys.argv[0],它始终是当前工作目录。

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

正如@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 1的输出:

2

首先,您需要导入sys

sys -系统相关参数和功能

这个模块提供了对解释器使用和维护的某些变量的访问,以及对与解释器强交互的函数的访问。此模块仍然可用。我将编辑这篇文章,以防这个模块不再工作。

然后,你可以打印参数的数量或者你想要的,参数列表。

按照下面的脚本执行:

#!/usr/bin/python


import sys


print 'Number of arguments entered :' len(sys.argv)


print 'Your argument list :' str(sys.argv)

然后,运行python脚本:

$ python arguments_List.py chocolate milk hot_Chocolate

你会得到你想要的结果

Number of arguments entered : 4
Your argument list : ['arguments_List.py', 'chocolate', 'milk', 'hot_Chocolate']

希望这能帮到别人。

应该使用sys(系统)模块。 参数具有STR类型,并且在数组

请注意: argv不是函数或类,是变量&可以改变

请注意: argv[0]是文件名

请注意:因为python是用c写的,c有main(int argc, char *argv[]);但是sys module中的argc不存在

请注意: sys模块名为System,用C语言编写,不是基于SOURCE的模块

from sys import argv # or
from sys import * # or
import sys


# code
print("is list") if type(sys.argv) == list else pass #  is list ,or
print("is list") if type(argv) == list else pass # is list
# arguments are str ( string )
print(type(sys.argv[1])) # str
# command : python filename.py 1 2 3
print(len(sys.argv)) # 3
print(sys.argv[1],'\n',sys.argv[2]'\n',sys.argv[3]) # following
'''
1
2
3
'''
# command : python filename.py 123
print(len(sys.argv)) # 1
print(sys.argv[1]) # following
'''
123
'''

你可以使用“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

使用下面的代码,可以检查是否输入了参数。如果是这样,则打印参数;否则,将打印一条声明未输入参数的消息。

import sys


if len(sys.args) <= 1:
print("the arguments are not entered in the command line")
else:
for arg in args:
print(arg)