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

时间:2010-10-27 13:24:33

标签: python command-line

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

我在终端上尝试了这个:

$python myfile.py var1 var2 var3

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

9 个答案:

答案 0 :(得分:387)

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']

答案 1 :(得分:88)

import sys

sys.argv[1:]

将为您提供一个参数列表(不包括python文件的名称)

答案 2 :(得分:64)

我强烈推荐Python 2.7及更高版本附带的the official documentation

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

答案 3 :(得分:44)

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 

答案 4 :(得分:20)

您可以使用sys.argv[i] 将参数作为列表获取。

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

i

其中0是索引,private void FilterContacts(string filter) { EmployeeList.BeginRefresh(); if (string.IsNullOrWhiteSpace(filter)) { System.Diagnostics.Debug.WriteLine("if1"); EmployeeList.ItemsSource = ourPitems; } else { System.Diagnostics.Debug.WriteLine("else2"); EmployeeList.ItemsSource = ourPitems.Where(x => x.irl1.ToLower ().Contains (filter.ToLower ())); } EmployeeList.EndRefresh (); } 将为您提供正在执行的python文件名。之后的任何索引都是传递的参数。

答案 5 :(得分:6)

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

import sys

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

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

答案 6 :(得分:4)

我能想到的其他一些事情。

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

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

答案 7 :(得分: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']

希望对某人有所帮助。

答案 8 :(得分:1)

应该使用sys(系统)模块。 参数具有 str 类型并且在一个数组中

注意:argv 不是函数或类,是可变的,可以更改

注意:argv[0] 是文件名

注意:因为用 c 编写的 python,C 有 main(int argc , char *argv[]);但是 sys 模块中的 argc 没有退出

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

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