首頁 > 軟體

超全面python常見報錯以及解決方案梳理必收藏

2022-03-17 19:01:00

AttribteError: ‘module' object has no attribute xxx'

描述:模組沒有相關屬性。可能出現的原因:

1.命名.py檔案時,使用了Python保留字或者與模組名等相同。

解決:修改檔名

2.pyc檔案中快取了沒有更新的程式碼。

解決:刪除該庫的.pyc 檔案

AttributeError: ‘Obj' object has no attribute ‘attr'

描述:物件沒有相關屬性。可能出現的原因:

1.Python內建物件沒有屬性。

解決:去除相關存取

2.Python自定義物件沒有設定屬性。

解決:在自定義物件中新增屬性

3.通過類名存取範例屬性。

解決:修改為通過範例名存取

FileExistsError: [Errmo 17] File exists

描述:檔案已經存在。

解決:先判斷檔案是否存在,如果已經存在,則不再重新建立

FileNotFoundError: [Ermo 2] No such file or directory

描述:請求的檔案或目錄不存在。

解決:檢查檔案或目錄的路徑是否正確

IndentationError: expected an indented block

描述:期望一個縮排塊。可能出現的原因:

1.定義函數或者類下的結構體時沒有縮排。

解決:新增縮排

2.if或者for或者while語句下的結構體沒有縮排。

解決:新增縮排

IndentationError: unexpected indent

描述:縮排錯誤。可能出現的原因:

程式碼 前面出現除縮排以外的空格。

解決:刪除多餘的空格

IndentationError: unindent does not match any outer indentation level

描述:佔位問題。可能出現的原因:

1.同一級的程式碼塊採用不同的縮排規則( 程式碼沒對齊)。

解決:用鍵對齊

2.存在非法字元或其他格式的不可見的內容。

解決:去除非法字元

IndexError: list index out of range

描述:列表下標越界,可能出現的原因

1.獲取元素時指定的索引值超過列表長度。

解決:修改索引值

2.列表為空,獲取元素時會出錯。

解決:判斷不為空再獲取

IndexError: string index out of range

描述:字串下標越界,可能出現的原因

1.進行字串擷取時,指定的索引不存在。

解決:修改索引值

2.根據索引獲取字串中的某個字元時,指定的索引不存在。

解決:修改索引值或者先進行判斷

sADirectoryError: [Ermo 21] Is a directory

描述:想要操作檔案,但提供的是一個目錄錯誤。可能出現的原因:

1.把目錄當作檔案操作,例如,test 是一個目錄,使用os.remove(test)時會引發錯誤。

解決:新增對應的檔名

2.忘記寫檔案的擴充套件名。

解決:將檔名補充完整

ITypeError: _ init _()takes 0 positional arguments but 1 was given

描述:位置引數個數不正確。可能出現的原因:

沒有為_- init__() 方法新增self引數。

解決:新增self引數

KeyError: ‘age'

描述:鍵錯誤。可能出現的原因:

1.根據鍵獲取字典的值時,指定的鍵不存在。

解決:修改為已有鍵

2.刪除一個不存在的鍵。

解決:在刪除前先判斷是否存在

ModuleNotFoundError: No module named' pymysql '

描述:模組不存在,可能出現的原因:

1.模組名稱拼寫錯誤。

解決:修改正確

2.沒有引入模組。

解決:使用import語句匯入模組

3.沒有下載第三方模組。

解決:使用pip安裝所需模組

NameError:name test' is not defined

描述:某個區域性或全域性變數名稱未找到。可能出現的原因:

1.變數沒有定義。

解決:定義變數

2.Python3版本不支援某些Python2中的函數或方法,如xrange()。

解決:修改為Python3中的函數或方法

RecursionEror:maximum rcusion depth exceded in comprison

描述:超過最大遞迴深度

解決:禁止無限遞迴,設定遞迴深度

SyntaxError: EOL whilescanning string literal

描述:字串的引號沒有成對出現。可能出現的情況:

1.忘記寫結束的引號。

解決:加上缺少的引號

2.在字串的結尾處包括。

解決:將替換為或/

3. 引號巢狀錯誤。

解決:建議採用外層單引號,內層雙引號

SyntaxError: invalid syntax

描述:無效的語法。可能出現的原因:

1.在if、while、 for等語句後面忘記寫冒號,或者冒號寫作分號等其他符號。

解決:修改為英文半形的冒號

2.函數或方法的小括號寫成了<>

解決:將其修改為英文半形的()

3.條件表示式中出現一個等號=。

解決:將其修改為比較運運算元==

4.定義沒有引數的函數時沒有加小括號。

解決:新增小括號

Syntax Error: non-default argument follows default argument

描述:引數定義順序錯誤。

可能出現的情況: 預設值引數沒有放置在所有引數的最後。

解決:更改引數順序

SyntaxError : invalid character in identifier

描述:識別符號中出現無效字元。

可能出現的原因:

1.函數或方法的小括號為中文狀態下輸入的。

解決:修改為英文半形狀態下輸入

2.字串定界符使用了中文引號。

解決:修改為英文半形狀態下輸入

3.程式碼行內包括全形空格。

解決:去除或者修改為半形空格

TimeouEror [WinEror 10060由於連線方在一段時間後沒有正確答覆 或連線的主機沒有反應,連線嘗試失敗

描述:連線超時。可能出現的原因:

1.資料庫連線超時。

解決: 檢查資料庫連線設定資訊是否正確

2. 請求URL超時。

解決:檢查URL是否正確以及能否正常存取

3.連線FTP服務超時。

解決:檢查連線FTP的引數是否正確

TypeError: can only concatenate str (not 「XXX」) to str

描述:只能進行字串與字串的連線。

可能出現的原因: 將字串與非字串型別(如整型、浮點型、布林型、序列物件等)的資料使用+進行連線。

解決:使用str()函數轉換後再連線

TypeError: f() takes exactly 2 arguments (1 given)

描述:為函數提供的引數個數不夠。

可能出現的情況: 定義兩個引數,呼叫時只傳遞一一個。

解決:將引數補充完整

TypeError: ‘tuple' object does not support item assignment

描述:不能修改元組元素。

可能出現的原因: 通過索引獲取元組元素並修改。

解決:將元組修改為列表或者刪除修改操作

ValueError: could not convert string to float:‘12.2月'

描述:無法將字串轉換為浮點數。

可能出現的原因: float()函數接受了非浮點數的字串型別資料。

解決:修改為浮點數位符串

ValueError: invalid literal for int() with base 10

描述:傳入無效的引數。

可能出現原因:

1.int()函數接受了非數位的字串型別資料。

解決:將非數位的字串修改為數位字串

2.將浮點型別的字串數位轉換為整型。

解決:先轉換為浮點型再轉換為整型

ValueError: substring not found

描述:未找到子字串。

可能出現的原因: 使用index()或者rindex()方法檢索字串時,指定的字串不存在。

解決:在檢索前先判斷

ZeroDivisionError: division by zero

描述: 0不能作為被除數。

可能出現的原因: 進行除法、取整除、求餘運算時,0作為除數。

解決:修改為非0數位

以上就是python常見報錯以及解決方案

到此這篇關於超全面python常見報錯以及解決方案梳理必收藏的文章就介紹到這了,更多相關python 常見報錯內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com