python中argv变量的问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中argv变量的问题。相关的知识,希望对你有一定的参考价值。

我在练习python语言中遇到的一些问题:
程序1:from sys import argv
first = argv
print "You want to search with tabel:", first
打印1:命令行输入:python test2.py first
You want to search with tabel:[‘test2.py’, ‘first’ ]

程序2: from sys import argv
script, first = argv
print "You want to search with tabel:", first
打印3:命令行输入:python test2.py first
You want to search with tabel: first

我只想打印出You want to search with tabel: first(即打印2),为什么程序1不能实现我想要的功能?为什么一定要将script赋值于argv?请详细说明一下。
谢谢。关于“注意这种用法当且仅当argv的长度为2时才成立,如果多加一个命令行参数就会出错。”这句话还是不太理解。
我写了一个程序如下:
程序3:
from sys import argv

script, first, second, third = argv

print "You want to search with tabel:", first
print "You want to search with tabel:", second
print "You want to search with tabel:", third

打印3:命令行输入:python test2.py a b c
You want to search with tabel: a
You want to search with tabel: b
You want to search with tabel: c
似乎并没有出错。
谢谢你的耐心解答。

这个是无数前人踩过的坑了,可以试一下。

from sys import argv
script,first,second,third=argv
print('the script is called:',script)
print(argv[0])
print(argv[1])
print(argv[2])
print(argv[3])

在DOS下运行(Terminal)和返回:

(venv) C:\\Users\\JeffersLi\\PycharmProjects\\untitled>python try01.py 张三 李四 王五
the script is called: try01.py
try040.py
张三
李四
王五

以下是另一个著名的小白坑。

from sys import argv
script,user_name = argv
prompt = '>'
print("My name is %s, and you know I am the %s script." % (user_name, script))
print(argv[0])
print(argv[1])

第二行的意思是告诉电脑,这两货script和user_name都是参数。

然后要去命令行去运行“python try040.py 张三”(Terminal或DOS下都行),而不是直接运行,否则会报错。

(venv) C:\\Users\\JeffersLi\\PycharmProjects\\untitled>python try040.py 张三
My name is 张三, and you know I am the try040.py script.
try040.py
张三

因为try01.py本身就是第一个参数了,“张三”才是第二个参数。

参考技术A 通过程序1可见,argv作为一个变量,是list类型的。其含有两个元素(都是字符串),第一个元素是“test2.py”即所执行的python脚本的名字;第二个元素才是我们想要的“第一个”命令行参数。
这个结论对于一般的python程序都是成立的,即argv[0]是脚本名,argv[1]是第一个命令行参数,argv[2]是第二个参数,等等。
程序2中的 script, first = argv 其实是用了一个特殊的python语法,即将argv[0]赋值给script变量,同时将argv[1]赋值给first变量。注意这种用法当且仅当argv的长度为2时才成立;如果要接受第二个命令行参数,就必须写成:script, first, second = argv追问

问题补充了一下,望解答!谢谢!

本回答被提问者采纳

python: sys.argv的实际作用?

如题,今天遇到sys.argv,大概了解一些,但是具体还是不清楚,argv是用来干什么的呢,为什么要用它,什么时候用?请高手解答一二。

sys.argv就是保存命令行参数的变量,通过它你可以获取到命令行中传入的参数,从而执行不同的条件分支。或者不同的功能。
python的optparse标准模块就是居于sys.argv实现的,写命令行工具的时候非常有用。

如果解决了您的问题请采纳!
如果未解决请继续追问
参考技术A sys.argv 将你从命令行执行脚本时的 脚本名称、参数保存到列表中。

如在linux 命令行下执行:test.py -v 123, 则 sys.argv=[‘test.py’,'-v','123']

这样你就可以在脚本'test.py'中使用这些参数了。追问

那再次输入命令行:test.py -help 是不是,sys.argv就被覆盖重写了?那sys.argv只限于这些作用吗,感觉作用不是很大。

本回答被提问者采纳

以上是关于python中argv变量的问题。的主要内容,如果未能解决你的问题,请参考以下文章

python模块中sys.argv[]使用

术语:Argv,调用程序

python: sys.argv的实际作用?

怎样使用python的argv命令调用另一个文件里面定义的变量?

笨办法学习python3练习代码:argv参数变量与文件操作

sys.argv[]用法-转载