python 中文路徑帶來的錯誤和解決

2021-08-05 23:26:07 字數 784 閱讀 9100

basedir = os.path.dirname(os.path.realpath(sys.argv[0]))

self.icon = wx.icon(basedir+'\\icon.ico',wx.bitmap_type_ico)

self.seticon(self.icon)

執行就報錯,

self.icon = wx.icon(basedir+'\\icon.ico',wx.bitmap_type_ico)

unicodedecodeerror: 'utf8' codec can't decode byte 0xbf in position 5: invalid s

tart byte

判斷應應該和,路徑中有中文有關係,把路徑改為全英文,就沒有問題了。

但這不是最終的解決辦法,如此發布的程式在中文目錄下面就用不了了。

經過對字元編碼的多翻償試,大致明白是什麼原因了。 因為中文路徑名,從argv 裡取出的時候

採用的是gbk編碼方式(和系統有關係及檔案編碼有關係), 而python 的字元運算,都會預設轉換成unicoce來運算的,

預設情況下採用utf8的方式解碼,但此路徑採用的是gbk編嗎的,在轉碼過程中不能有效轉碼。

這種情況就需要我們指定轉碼的編碼方式。所以**修改一下:

basedir = os.path.dirname(os.path.realpath(sys.argv[0].decode('gbk')))

這樣就沒問題了。

Python中檔案路徑

絕對路徑就是檔案的真正存在的路徑,是指從硬碟的根目錄 碟符 開始,進行一級級目錄指向檔案。相對路徑就是以當前檔案為基準進行一級級目錄指向被引用的資源檔案。以下是常用的表示當前目錄和當前目錄的父級目錄的識別符號 表示當前檔案所在的目錄的上一級目錄 表示當前檔案所在的目錄 可以省略 表示當前站點的根目錄...

Python 中文路徑問題

python中檔案路徑的問題 慎用中文路徑!慎重中文路徑!慎用中文路徑!使用斜槓 c test.txt 不用反斜槓就沒法產生歧義了 將反斜槓符號轉義 c test.txt 因為反斜槓是轉義符,所以兩個 就表示乙個反斜槓符號 使用python的raw string r c test.txt pytho...

Python中檔案的路徑操作

前三個必須掌握,後面了解即可。1.獲取當前檔案的絕對路徑 os.path.abspath file 2.獲取檔案所在的目錄 os.path.dirname 絕對路徑 note 得到專案的根目錄,按照當前檔案和專案根目錄之間的層級關係eg os.path.dirname os.path.dirname...