IndentationError: unindent does not match any outer indentation level筆記


 

   執行一個Python腳本的時候,報IndentationError: unindent does not match any outer indentation level" 錯誤,搜索了一下相關資料,遇到這個錯誤,是因為新的Python語法中是不支持的代碼對齊中,混用TAB和空格的。

 

# python get_mssql_job_info.py

  File "get_mssql_job_info.py", line 29

    db_sub_conn = pymssql.connect(host=row[1],

                                             ^

IndentationError: unindent does not match any outer indentation level

 

 

 

 如上所示,可以使用Notepad++打開腳本,勾選顯示空格與制表符,此時你會看到代碼對齊使用了制表符與空格

 

clip_image001

 

 

clip_image002

 

 

我用空格替換了制表符后,發現還是報這個錯誤,最后發現報錯行上面注釋的地方也要注意代碼對齊,而我代碼里面上面的'''使用制表符, 下面的'''使用空格。所以這里也必須一致

 

clip_image003

 

 

解決方法:

 

 

1: 使用工具pycharm  有個快捷鍵 CTRL+ALT+L格式化代碼。

 

2: 在Notepad++的首先項里面,可以勾選替換為空格,如下所示,不同版本的Notepad++,可能設置選項有所出入。這樣可以避免使用Tab+空格鍵時出現這種情況。

clip_image004

 

 

后面我又遇到了下面IndentationError: unexpected indent這個錯誤:

 

 

# python get_mssql_job_info.py

  File "get_mssql_job_info.py", line 37

    sub_cursor =db_sub_conn.cursor(as_dict=True)

    ^

IndentationError: unexpected indent

 

結果也是發現注釋也必須和代碼對齊

 

clip_image005

 

正確的對齊方式如下:

 

clip_image006

 

 

雖然是一個小小的問題,還是折射出對Python代碼對齊理解的一些細節問題的疏忽。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM