这段关于sys.args的代码是什么意思?

时间:2016-03-10 20:42:26

标签: python argv sys

以下代码块是什么意思?我不明白sys.argv的概念。我听说它与命令行提示有关,但我的词汇量不足以理解。输出也很奇怪。我不明白列表是如何被拉出来的,也不知道元素是如何进入的,甚至是它们来自何处以及它们的含义。这真让我感到困惑,所以非常感谢帮助理解它。请使用更好的术语,以便我能理解。

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

2 个答案:

答案 0 :(得分:3)

大多数程序接受改变其行为方式的参数。 e.g。

grep some_string myfile.ext

此命令(在unix系统上)在'some_string'中查找myfile.ext并将匹配的行打印到控制台。

所以问题是grep(正在运行的程序),知道要查找的内容或要查看的文件是怎样的?答案很明显 - 它通过命令行传递这些参数。您也有权将命令列表中的参数传递给python程序:

python my_python_file.py argument1 argument2

在这种情况下,如果my_python_file.py包含您问题中的内容,sys.argv将包含['my_python_file.py', 'argument1', 'argument2']

因此,您可以查看sys.argv并在其中查看'argument1',并让您的代码相应地执行某些操作。请注意,手动解析sys.argv是非常罕见的,除非它是真正的简单情况。通常,您可以使用argparse之类的东西为您解析参数,并以更易于管理的格式返回解析后的信息。

答案 1 :(得分:2)

sys.argvstring的列表,其中包含执行Python脚本时的参数(即>> python main.py arg1 arg2)。

请注意,第一个参数将始终是命令的名称。第一个"实际"参数位于sys.argv[1](假设传递了至少一个参数)。