使用 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中文网其他相关文章!