python中argv变量的问题。

我在练习python语言中遇到的一些问题:程序1:fromsysimportargvfirst=argvprint"Youwanttosearchwithtabel:",... 我在练习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
似乎并没有出错。
谢谢你的耐心解答。
展开
 我来答
职业人和培训师
推荐于2018-01-30 · TA获得超过1399个赞
知道小有建树答主
回答量:428
采纳率:90%
帮助的人:111万
展开全部

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

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本身就是第一个参数了,“张三”才是第二个参数。

WM_THU
推荐于2017-11-21 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3940万
展开全部
通过程序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
追问
问题补充了一下,望解答!谢谢!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式