我试图迭代目录中的文件,如下所示:
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'
那么这里到底出了什么问题?
问题出在你尝试使用 open(filename, 'r') 打开文件时,它是在当前工作目录中寻找文件而不是指定的目录中。
open(filename, 'r')
要解决这个问题,你需要将目录路径与文件名连接起来,以获取文件的完整路径。你可以使用 os.path.join 来完成这个任务。
os.path.join
这里是修正后的代码:
import os path = r'E:/somedir' for filename in os.listdir(path): full_path = os.path.join(path, filename) with open(full_path, 'r') as f: # 处理文件的代码 pass # 替换成你的文件处理代码
os.listdir(path)
path
os.path.join(path, filename)
with open(full_path, 'r') as f
with
open
以下是带有错误处理的更新代码示例:
import os path = r'E:/somedir' for filename in os.listdir(path): full_path = os.path.join(path, filename) try: with open(full_path, 'r') as f: # 处理文件的代码 pass # 替换成你的文件处理代码 except FileNotFoundError: print(f"文件未找到:{full_path}") except Exception as e: print(f"打开文件 {full_path} 时出错:{e}")
这段代码将处理 FileNotFoundError,如果找不到文件,则打印消息。它还处理其他可能的异常,并打印错误消息。