Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError要解压缩的值太多_Python_Powershell - Fatal编程技术网

Python ValueError要解压缩的值太多

Python ValueError要解压缩的值太多,python,powershell,Python,Powershell,我的代码: from sys import argv pl_magic, pl_pet = argv pl_enemy = raw_input("The second enchanter:") print "The most powerful enchanter is",pl_magic print pl_pet,"is the pet of",pl_magic print "They hate %s" %pl_enemy powershell中的输出: PS D:\FILE\LPHW>

我的代码:

from sys import argv
pl_magic, pl_pet = argv
pl_enemy = raw_input("The second enchanter:")
print "The most powerful enchanter is",pl_magic
print pl_pet,"is the pet of",pl_magic
print "They hate %s" %pl_enemy
powershell中的输出:

PS D:\FILE\LPHW> python ex13b.py 1 2 3
Traceback (most recent call last):
  File "ex13b.py", line 2, in <module>
    pl_magic, pl_pet = argv
ValueError: too many values to unpack
PS D:\FILE\LPHW>python ex13b.py 1 2 3
回溯(最近一次呼叫最后一次):
文件“ex13b.py”,第2行,在
pl_魔法,pl_宠物=argv
ValueError:要解压缩的值太多

我想知道代码有什么问题……

Argv数组不仅包含命令行参数,而且还包含运行脚本的名称,所以

argv[0] = "ex13b.py"
还有,通过写作

pl_magic, pl_pet = argv
您希望argv仅包含2个值,而在命令行参数中,您提供3个参数。这使得argv总共包含4个值,因为第一个值始终是脚本名

您的代码应该如下所示:

script_name, pl_magic, pl_pet, third_argument = argv
话虽如此,您不应该盲目地打开包装,还应该添加一些检查,例如:

args_count = len(argv) - 1
if args_count < 3:
    #do something if not enough arguments provided
args\u count=len(argv)-1
如果args_计数小于3:
#如果没有提供足够的参数,请执行某些操作

Argv数组不仅包含命令行参数,还包含正在运行的脚本的名称

argv[0] = "ex13b.py"
还有,通过写作

pl_magic, pl_pet = argv
您希望argv仅包含2个值,而在命令行参数中,您提供3个参数。这使得argv总共包含4个值,因为第一个值始终是脚本名

您的代码应该如下所示:

script_name, pl_magic, pl_pet, third_argument = argv
话虽如此,您不应该盲目地打开包装,还应该添加一些检查,例如:

args_count = len(argv) - 1
if args_count < 3:
    #do something if not enough arguments provided
args\u count=len(argv)-1
如果args_计数小于3:
#如果没有提供足够的参数,请执行某些操作
当您执行以下操作时:

pl_magic, pl_pet = argv
并输入参数(请记住,您应该在
sys.argv
中考虑文件名):

您实际上运行以下行:

pl_magic, pl_pet = ['ex13b.py', '1', '2', '3']
将值解包到变量中时,需要相同数量的变量和值。这就是你的代码无法工作的原因

您可以使用:

_, par1, par2, par3 = sys.argv

在Python 3中,您还可以使用:

_, par1, *par2 = sys.argv
这将导致:

_ = 'ex13b.py'
par1 = '1'
par2 = ['2', '3']
当您这样做时:

pl_magic, pl_pet = argv
并输入参数(请记住,您应该在
sys.argv
中考虑文件名):

您实际上运行以下行:

pl_magic, pl_pet = ['ex13b.py', '1', '2', '3']
将值解包到变量中时,需要相同数量的变量和值。这就是你的代码无法工作的原因

您可以使用:

_, par1, par2, par3 = sys.argv

在Python 3中,您还可以使用:

_, par1, *par2 = sys.argv
这将导致:

_ = 'ex13b.py'
par1 = '1'
par2 = ['2', '3']

请编辑您的问题以使用正确的代码格式。的可能重复请编辑您的问题以使用正确的代码格式。的可能重复