我试图遍历这样的目录中的文件:
import os path = r'E:/somedir' for filename in os.listdir(path): f = open(filename, 'r') ... # process the file
但是,FileNotFoundError即使文件存在,Python仍会抛出:
FileNotFoundError
Traceback (most recent call last): File "E:/ADMTM/TestT.py", line 6, in <module> f = open(filename, 'r') FileNotFoundError: [Errno 2] No such file or directory: 'foo.txt'
那么,这里出了什么问题?
这是因为os.listdir不返回文件的完整路径,仅返回文件名部分;也就是说'foo.txt',当打开时会需要,'E:/somedir/foo.txt'因为该文件在当前目录中不存在。
os.listdir
'foo.txt'
'E:/somedir/foo.txt'
用于os.path.join在目录前添加文件名:
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块将自动处理该文件)。
with