Python異常 ValueError的問題詳解

大雄45發表於2023-04-21
導讀 這篇文章主要介紹了Python異常 ValueError的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
Python異常 ValueError
ValueError: invalid literal for int() with base 10: '*'

試圖將一個與數字無關的型別轉化為整數,會丟擲該異常。

>>> int("99 years ago.")
Traceback (most recent call last):
  File "", line 1, inValueError: 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 "", line 1, inValueError: 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 "", line 1, inValueError: 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'

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2945093/,如需轉載,請註明出處,否則將追究法律責任。

相關文章