在本书的一章中,我试图自学python,这是一个非常简单的问题

在本书的一章中,我试图自学python,这是一个非常简单的问题,python,Python,这是我试图运行的程序的一部分,我认为没有必要再运行了。我尝试通过在终端中键入以下内容来运行它: from sys import argv script, user_name=argv 那应该有用,对吗?我知道这很简单,但我真的被卡住了。我也不完全明白我在那里做什么。我现在用的这本书是关于参数和解包的,我还没有完全理解。一个解释就太棒了 谢谢。argv是一个包含脚本名称和每个命令行参数的列表。在运行python exl.py脚本user_name的情况下,sys.argv的长度为3(脚本(ex

这是我试图运行的程序的一部分,我认为没有必要再运行了。我尝试通过在终端中键入以下内容来运行它:

from sys import argv

script, user_name=argv
那应该有用,对吗?我知道这很简单,但我真的被卡住了。我也不完全明白我在那里做什么。我现在用的这本书是关于参数和解包的,我还没有完全理解。一个解释就太棒了


谢谢。argv是一个包含脚本名称和每个命令行参数的列表。在运行
python exl.py脚本user_name
的情况下,
sys.argv
的长度为3(脚本(exl.py)和两个参数(脚本和用户名)。脚本希望
argv
有两个条目(脚本、用户名),而不是三个,因此失败。请尝试
python exl.py user_name

下面是一个示例,您可以在交互提示下键入:

python exl.py script user_name
win32上的Python 2.6.6(r266:84297,2010年8月24日,18:46:32)[MSC v.1500 32位(英特尔)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>L=[1,2,3]#制作一个三元素列表。 >>>a,b=L#但仅尝试解包2个元素。 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ValueError:要解压缩的值太多 >>>a,b,c=L#现在试试三个元素 >>>a 1. >>>b 2. >>>c 3.
sys.argv
是一个包含脚本名称和每个命令行参数的列表。在运行
python exl.py script user\u name
的情况下,
sys.argv
的长度为3(脚本(exl.py)和两个参数(脚本和用户名)。您的脚本希望
argv
有两个条目(脚本、用户名)而不是三个,因此失败。请尝试使用
python exl.py user\u name

下面是一个示例,您可以在交互提示下键入:

python exl.py script user_name
win32上的Python 2.6.6(r266:84297,2010年8月24日,18:46:32)[MSC v.1500 32位(英特尔)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>L=[1,2,3]#制作一个三元素列表。 >>>a,b=L#但仅尝试解包2个元素。 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ValueError:要解压缩的值太多 >>>a,b,c=L#现在试试三个元素 >>>a 1. >>>b 2. >>>c 3.
sys.argv[0]
是脚本的名称(在本例中为
exl.py
),不传递文本“脚本”

您可以通过测试程序轻松地尝试此操作:

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

sys.argv[0]
是脚本的名称(在本例中为
exl.py
),不传递文本“脚本”

您可以通过测试程序轻松地尝试此操作:

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

argv是一个数组,因此需要执行以下操作: script=argv[1] user_name=argv[2]


请注意,argv[0]被设置为脚本名称(请参见此链接)

argv是一个数组,因此需要执行以下操作: script=argv[1] user_name=argv[2]


请注意,argv[0]被设置为脚本名称(请参见此链接)

您也可以尝试使用索引片

import sys
print sys.argv
基本上,argv是一个数组,它包含在命令行上传递给程序的参数。 当你解包一个数组时,你需要有一个地方来解包。在你的例子中,你只提供了两个变量来解包一个包含三个项目的数组

如果您想知道,阵列切片的工作原理如下:
a[x:y]其中a是数组,x是开始切片的索引,y是停止的位置。在上面的示例中,我从索引1(在exl.py和script之间)开始,在数组的末尾结束。

您也可以尝试使用索引切片

import sys
print sys.argv
基本上,argv是一个数组,它包含在命令行上传递给程序的参数。 当你解包一个数组时,你需要有一个地方来解包。在你的例子中,你只提供了两个变量来解包一个包含三个项目的数组

如果您想知道,阵列切片的工作原理如下:
a[x:y]其中a是数组,x是开始切片的索引,y是停止的位置。在上面的示例中,我从索引1开始(在exl.py和script之间)并且在数组的末尾结束。

下次您也应该发布错误消息。我猜是
ValueError:太多值无法解包
下次您也应该发布错误消息。我猜是
ValueError:太多值无法解包