天天看點

ValueError: embedded null character 和 FileNotFoundError: [Errno 2] No such file or directory 錯誤處理

今天學習東西是從一個Excel檔案中取出一個單元格的資料,并列印出來。對比cell 和 cell_vavalue 的不同。

源程式如下:

import xlrd

filename = "D:\python\pythonProject\000001.xlsx"
book = xlrd.open_workbook(filename, encoding_override="utf-8")
text = book.sheets()

for book in text:
    sheet_name = [book.name]

sbs = book.cell(1, 0)
print(sbs)

sbs = book.cell_value(1, 0)
print(sbs)

print(sheet_name)
           

運作程式時候,出現如下錯我

Traceback (most recent call last):

File “D:\python\pythonProject\測試-1.py”, line 4, in

book = xlrd.open_workbook(filename, encoding_override=“utf-8”)

File “C:\Users\ThinkPad\AppData\Local\Programs\Python\Python39\lib\site-packages\xlrd_init_.py”, line 111, in open_workbook

with open(filename, “rb”) as f:ValueError: embedded null character

查了一下,ValueError: embedded null character的意思是:嵌入的值錯誤:空字元

實在搞不明白這個錯誤怎麼回事,

然後我嘗試打開其他檔案

filename = "D:\python\pythonProject\股票資料彙總.xlsx"
           

完美,完全可以運作。

看樣程式代碼沒有什麼問題。再回去運作000001.xlsx還是不行,然後我把 股票資料彙總.xlsx 改為000001.xlsx,然後運作程式,結果又不行了,我感覺問題出現在檔案名上,然後,我将檔案名改為1234.xlsx,運作出現如下錯誤:

Traceback (most recent call last):

File “D:\python\pythonProject\測試-1.py”, line 4, in

book = xlrd.open_workbook(filename, encoding_override=“utf-8”)

File “C:\Users\ThinkPad\AppData\Local\Programs\Python\Python39\lib\site-packages\xlrd_init_.py”, line 111, in open_workbook

with open(filename, “rb”) as f:

FileNotFoundError: [Errno 2] No such file or directory: ‘D:\python\pythonProjectS4.xlsx’

反複查找,在源檔案上有這樣一個提示

ValueError: embedded null character 和 FileNotFoundError: [Errno 2] No such file or directory 錯誤處理

百度一下,找找别人的經驗,終于明白,檔案名稱出現了問題。怎麼解決???

單反斜杠“\”改為雙反斜杠“\\”

問題解決了。

filename = “D:\python\pythonProject\000001.xlsx”

更改為

filename = “D:\python\pythonProject\\000001.xlsx”

運作程式,完美解決。

更改為 filename = “D:\\python\\pythonProject\\000001.xlsx” 更完美,連灰色波浪線都沒有了。

為什麼這樣?還不了解,但是問題解決了,

這個錯誤僅出現在用數字命名的檔案名上,英文字母、漢字命名的檔案,沒有這個問題。

程式運作結果

000001.xlsx檔案的内容

ValueError: embedded null character 和 FileNotFoundError: [Errno 2] No such file or directory 錯誤處理

運作結果

text:‘000002(萬 科A)’

000002(萬 科A)

[‘Sheet1’]

這裡可以發現

.cell 傳回的是單元格裡面的所有内容,包括單元格格式定義:text:‘’+單元格内容

.cell_value 傳回的是單元格裡面的顯示内容,僅單元格内可視内容。