Python脚本执行报ValueError:预期4个值仅得1个,求解决方法
解决argv参数不足的ValueError问题
嘿,这个错误其实很好理解——你的代码在拆包argv的时候,明确要求了4个值(脚本文件名本身算第一个,再加上你定义的first、second、third三个参数),但你运行脚本的时候只给了1个(只有脚本名),自然就匹配不上啦。
先看你的代码逻辑:
from sys import argv script, first, second, third = argv for i in argv: print(i)
argv是命令行参数组成的列表,第一个元素永远是你执行的脚本文件名,后面的元素才是你手动传入的额外参数。你把它直接解包成4个变量,就意味着必须在运行脚本时额外提供3个参数,凑够4个元素才能正常工作。
正确的运行方式
在Ubuntu终端里,别只输python3 你的脚本名.py,得像这样传够参数:
python3 your_script.py 第一个参数 第二个参数 第三个参数
举个实际的例子,假设你的脚本叫test.py,可以这么运行:
python3 test.py cat dog bird
这时候argv列表就是['test.py', 'cat', 'dog', 'bird'],刚好能拆成你定义的四个变量,循环也会把这四个内容依次打印出来。
给脚本加个“容错机制”(可选)
如果想避免用户忘记传参数就报错,可以提前判断参数数量,给个友好提示:
from sys import argv if len(argv) != 4: print("哎呀,参数不够!正确用法:python3 脚本名 参数1 参数2 参数3") exit() script, first, second, third = argv for i in argv: print(i)
这样用户没传够参数时,就会看到清晰的提示,而不是一堆看不懂的错误信息啦。
内容的提问来源于stack exchange,提问作者Dimitris
相关产品推荐
相关产品推荐

