執行一個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++打開腳本,勾選“顯示空格與制表符”,此時你會看到代碼對齊使用了制表符與空格
我用空格替換了制表符后,發現還是報這個錯誤,最后發現報錯行上面注釋的地方也要注意代碼對齊,而我代碼里面上面的'''使用制表符, 下面的'''使用空格。所以這里也必須一致
解決方法:
1: 使用工具pycharm 有個快捷鍵 CTRL+ALT+L格式化代碼。
2: 在Notepad++的首先項里面,可以勾選“替換為空格”,如下所示,不同版本的Notepad++,可能設置選項有所出入。這樣可以避免使用Tab+空格鍵時出現這種情況。
后面我又遇到了下面“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
結果也是發現注釋也必須和代碼對齊
正確的對齊方式如下:
雖然是一個小小的問題,還是折射出對Python代碼對齊理解的一些細節問題的疏忽。