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
似乎并没有出错。
谢谢你的耐心解答。 展开
程序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
似乎并没有出错。
谢谢你的耐心解答。 展开
2个回答
展开全部
这个是无数前人踩过的坑了,可以试一下。
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本身就是第一个参数了,“张三”才是第二个参数。
展开全部
通过程序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程序都是成立的,即argv[0]是脚本名,argv[1]是第一个命令行参数,argv[2]是第二个参数,等等。
程序2中的 script, first = argv 其实是用了一个特殊的python语法,即将argv[0]赋值给script变量,同时将argv[1]赋值给first变量。注意这种用法当且仅当argv的长度为2时才成立;如果要接受第二个命令行参数,就必须写成:script, first, second = argv
追问
问题补充了一下,望解答!谢谢!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询