试图教自己python,卡在本书的一章,非常简单的问题

时间:2010-12-26 08:27:11

标签: python

from sys import argv

script, user_name=argv

这是我试图运行的程序的一部分,我认为不再需要了。我尝试通过输入终端来运行它:

python exl.py script user_name

这应该有用,对吗?我知道这很简单,但我真的被卡住了。我也不完全明白我在那里做什么。我正在使用的这本书正在处理参数和拆包现在我并没有完全理解它。解释会很棒。

谢谢

4 个答案:

答案 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