什么是"argv",它有什么作用?

Dyl*_*rds 8 python

ARGV

这是什么地球!?

编辑:如果可以的话,请你写一两行并解释它是如何工作的?

Sen*_*ran 24

试试这个简单的程序,将其命名为 program.py

import sys
print sys.argv
Run Code Online (Sandbox Code Playgroud)

并尝试执行

python program.py
python program.py a b c
python program.py hello world
Run Code Online (Sandbox Code Playgroud)

注意什么是argv现在.

  • +1因为这显示了一种通过实验找到答案的有用方法,而不仅仅是重写文档中的内容. (5认同)
  • 它很有用,因为有时你想在不同的参数上多次运行同一个程序.想想像`ls`这样的内置工具(如果你在Windows上的话,还是`dir`).你不需要一个工具来记录当前目录中的所有文本文件,另一个工具用于我所有主目录中的所有文件,包括隐藏的文件,等等,用于每种可能的组合.相反,你只需要一个工具,你可以输入`ls*.txt`或`ls -a~`或任何数十种其他组合. (4认同)
  • 显示 argv 对于每个示例实际包含的内容将很有用。 (2认同)

ale*_*lex 13

它表示参数vector,它包含传递给程序的参数.第一个始终是程序名称.

例如,如果你像这样执行你的Python程序......

 $ python your_script.py --yes
Run Code Online (Sandbox Code Playgroud)

...然后你的sys.argv意志包含your_script.py--yes.


aba*_*ert 12

在浪费时间"开始学习更高级别的代码"之前,您需要学习如何查找这样的信息.知道如何查找一个不熟悉的函数/类/变量,而不必等待30-60分钟让SO上的人回答你(并且显然在这个过程中支持多个downvotes),将比添加一个更有用一些信息到你的保留节目.

从内置帮助:

>>> import sys
>>> help(sys)
…
argv -- command line arguments; argv[0] is the script pathname if known
…
Run Code Online (Sandbox Code Playgroud)

这适用于任何模块.通常,模块中的各个类和函数都有更详细的信息(但这对argv不起作用,因为它只是一个list,而列表没有自定义帮助).

如果这还不够,那么文档(或2.x文档)会说:

SYS.ARGV

传递给Python脚本的命令行参数列表.argv [0]是脚本名称(无论这是否是完整路径名,它依赖于操作系统).如果使用解释器的-c命令行选项执行命令,则将argv [0]设置为字符串'-c'.如果没有脚本名称传递给Python解释器,则argv [0]为空字符串.

要循环标准输入或命令行上给出的文件列表,请参阅fileinput模块.

谷歌搜索"python argv"的第一个网络结果是Python作者Guido的博客文章,对你来说可能有点过于先进,但第二个是关于"命令行参数" 的教程.

由于大部分的这些事情告诉你,很多简单的脚本往往只使用fileinput,而不是处理argv直接,而更复杂的脚本经常需要使用argparse(或optparse,getopt或其他的替代品,如果你需要使用Python 2.6或更早版本的工作).

sys.argv恰到好处的一个例子是这个简单的程序将相对路径名转换为绝对路径(对于那些不在linux或其他平台上的那些带有abspath,GNU readlink或类似工具的内置程序):

import os, sys
print('\n'.join(os.path.abspath(arg) for arg in sys.argv[1:]))
Run Code Online (Sandbox Code Playgroud)

或者这个"添加"工具只添加了一堆数字(对于那些坚持使用cmd.exe或其他没有内置算术的有缺陷的shell):

import sys
print(sum(int(arg) for arg in sys.argv[1:]))
Run Code Online (Sandbox Code Playgroud)


elr*_*ado 5

您可以使用或不使用参数运行python程序.如果你使用参数,它们都在argv vector中.例如

PYTHON计划!!!

#!/usr/bin/python

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
Run Code Online (Sandbox Code Playgroud)

像这样运行脚本

$ python test.py arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)

结果是

Number of arguments: 4 arguments.
Argument List: ['test.py', 'arg1', 'arg2', 'arg3']
Run Code Online (Sandbox Code Playgroud)

示例来自 tutorialspoint