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']
请编辑您的问题以使用正确的代码格式。的可能重复请编辑您的问题以使用正确的代码格式。的可能重复