Python异常 ValueError的问题

目录

Python异常 ValueError

ValueError: invalid literal for int() with base 10: '*'

试图将一个与数字无关的类型转化为整数,会抛出该异常。

>>> int(\"99 years ago.\")
Traceback (most recent call last):
  File \"<stdin>\", line 1, in <module>
ValueError: invalid literal for int() with base 10: \'99 years ago.\'

规避方法:int函数参数应该合法使用。int函数使用传送门:Python中的int函数使用

ValueError: too many values to unpack (expected 2)

试图遍历字典时同时遍历键和值。

>>> demo = {\"China\": \"Beijing\", \"Japan\": \"Tokyo\"}
>>> for k, v in demo:
...     print(k, v)
...
Traceback (most recent call last):
  File \"<stdin>\", line 1, in <module>
ValueError: too many values to unpack (expected 2)

Python只允许对字典key的遍历,因此上面的遍历方式是错误的。

规避方法

方法一:使用dict[key]的方式同时获取value

>>> demo = {\"China\": \"Beijing\", \"Japan\": \"Tokyo\"}
>>> for key in demo:
...     print(key, demo[key])
...
China Beijing
Japan Tokyo

方法二:使用items方法

>>> demo = {\"China\": \"Beijing\", \"Japan\": \"Tokyo\", \"the United States\": \"Washington D.C.\"}
>>> for key, value in demo.items():
...     print(key, value)
...
China Beijing
Japan Tokyo
the United States Washington D.C.
ValueError: binary mode doesn\'t take an encoding argument

试图以二进制模式读取文件时指定编码方式。

>>> with open(\"protoc-gen-go\", \"rb+\", encoding=\"utf-8\") as file:
...     data = file.read()
...
Traceback (most recent call last):
  File \"<stdin>\", line 1, in <module>
ValueError: binary mode doesn\'t take an encoding argument

规避方法:避免使用encoding关键字

>>> with open(\"protoc-gen-go\", \"rb+\") as file:
...     data = file.read(10)
...
>>> data
b\'\\xcf\\xfa\\xed\\xfe\\x07\\x00\\x00\\x01\\x03\\x00\'

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容