from sys import argv
script, user_name=argv
这是我试图运行的程序的一部分,我认为不再需要了。我尝试通过输入终端来运行它:
python exl.py script user_name
这应该有用,对吗?我知道这很简单,但我真的被卡住了。我也不完全明白我在那里做什么。我正在使用的这本书正在处理参数和拆包现在我并没有完全理解它。解释会很棒。
谢谢
答案 0 :(得分:3)
sys.argv[0]
是您脚本的名称(在本例中为exl.py
)。你没有传递文字“脚本”。
您可以使用测试程序轻松尝试:
import sys
print sys.argv
答案 1 :(得分:1)
sys.argv
是一个包含脚本名称和每个命令行参数的列表。在运行python exl.py script user_name
的情况下,sys.argv
的长度为3(脚本(exl.py)和两个参数(script和user_name)。您的脚本希望argv
有两个条目(script,user_name)不是三个,因此失败。请改为python exl.py user_name
。
以下是您可以在交互式提示下输入的示例:
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> L = [1,2,3] # make a 3-element list.
>>> a,b = L # but only try to unpack 2 elements.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
>>> a,b,c = L # now try three elements
>>> a
1
>>> b
2
>>> c
3
答案 2 :(得分:1)
您也可以尝试使用索引切片!
from sys import argv
script, user_name=argv[:2]
基本上,argv是一个数组,它包含在命令行传递给程序的参数。在这种情况下,数组将包含[exl.py,script,user_name]。 解压缩数组时,需要有一个地方可以解压缩它们。在您的情况下,您只提供两个变量来解压缩包含三个项目的数组。
如果您想知道,数组切片的工作方式如下: a [x:y]其中a是数组,x是开始切片的索引,y是要停止的地方。在上面的例子中,我从索引1(exl.py和脚本之间)开始,到数组末尾结束。
答案 3 :(得分:0)
argv是一个数组,所以你需要做类似的事情: script = argv [1] user_name = argv [2]
请注意,argv [0]设置为脚本名称(请参阅此链接http://docs.python.org/library/sys.html)