使用os.listdir 時Python 中出現檔案未找到錯誤
使用os.listdir() 迭代目錄中的檔案可能會觸發FileNotFoundError,即使檔案存在。發生此錯誤的原因是 os.listdir() 僅傳回檔名,而不是完整路徑。
考慮以下程式碼:
import os path = r'E:/somedir' for filename in os.listdir(path): f = open(filename, 'r')
執行時,此程式碼將產生 FileNotFoundError檔案 'foo.txt',即使它存在於指定目錄中。
問題在於 os.listdir() 傳回僅檔案名稱部分,例如「foo.txt」。但是,open() 函數需要檔案完整的路徑,包括目錄路徑,例如 'E:/somedir/foo.txt'。
要解決此問題, os.path.join( ) 可用於在檔案名稱前新增目錄路徑:
path = r'E:/somedir' for filename in os.listdir(path): with open(os.path.join(path, filename)) as f: # process the file
with 區塊也可用於自動關閉檔案。
以上是為什麼在Python中開啟檔案時`os.listdir()`會導致`FileNotFoundError`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!