詭異錯誤一: ValueError: embedded null character


使用如下語句讀取名為0_xx.txt 文件時,遇到錯誤  ValueError: embedded null character

if __name__ == '__main__':
    fr = open("F:\eclipse_workspace\machine_learning_example\Ch02\trainningDigits\0_38.txt")
    for i in range(32):
        lineStr = fr.readline()
        lineStr = lineStr.strip()
        print(lineStr)
    pass

1、通過測試,確定錯誤確實是文件讀取語句;

2、是否是文件中包含null字符呢?用ultraedit工具用16進制形式檢查數據文件,沒有發現有null字符;

3、是否是因為Windows中的編碼和python中的編碼形式不一樣造成的呢?查看到文件編碼為GBK格式,但python是可以正確讀取GBK文件的,試了其它GBK文件,讀取沒有任何問題;

4、是不是因為文件名太長?把數據文件放在當前文件夾下,嘗試讀取確實沒有問題。但真的是文件名太長的原因嗎?這時候我才發現文件名中有個 ‘\0’ ,才如夢初醒。

 

注意:一般情況下,Python解釋器會將遇到的‘\’識別為路徑,會自動增加一個'\'以便和轉義字符進行區分,但若遇到轉義字符則不增加‘\’。

例如:上述文件名將被轉換為 F:\\eclipse_workspace\\machine_learning_example\\Ch02\trainingDigits\0_38.txt。因而出錯。

文件路徑中若包含‘\0’、'\t' 等特殊轉義字符時要特別注意。

推薦文件路徑寫法:

  • F:/eclipse_workspace/machine_learning_example/Ch02/trainningDigits/0_38.txt ,斜杠反過來了,這樣就不會出現歧義了。
  • F:\\eclipse_workspace\\machine_learning_example\\Ch02\\trainningDigits\\0_38.txt


免責聲明!

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



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