You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用os.listdir遍历目录打开文件报FileNotFoundError如何解决?

问题根因

os.listdir(path) 仅返回目标目录下的纯文件名,不会携带父级路径。你直接把文件名传给open()函数时,Python会默认在脚本运行的当前工作目录(也就是test.py所在的myapp/目录)查找文件,而你的txt文件实际存放在myapp/myfiles/子目录下,自然找不到对应文件。

修复方案

方案1:拼接完整文件路径(兼容全Python版本,适配现有代码逻辑)

修改循环内的打开逻辑,把目录路径和文件名拼接成完整路径后再操作:

import os, sys

# Open a file
path = "C:/Users/mypc/Myapp/myapp/myfiles"
dirs = os.listdir( path )

for file in dirs:
    # 拼接完整路径,避免路径分隔符适配问题
    full_file_path = os.path.join(path, file)
    # 可选:过滤只处理txt文件,避免目录下有子文件夹时报错
    if not file.endswith('.txt'):
        continue
    with open(full_file_path, 'rb') as _fp:
        fileData = _fp.read()
        print("FILE DATA (%s):\n\n%s\n\n"%(_fp.name, fileData))

方案2:使用pathlib(Python 3.4+ 更简洁的路径处理方式)

如果你的Python版本支持,用pathlib写代码更简洁,也能避免手动拼接路径的常见错误:

from pathlib import Path

path = Path("C:/Users/mypc/Myapp/myapp/myfiles")

for file in path.iterdir():
    # 只处理txt格式的普通文件
    if file.is_file() and file.suffix == '.txt':
        with open(file, 'rb') as _fp:
            fileData = _fp.read()
            print(f"FILE DATA ({_fp.name}):\n\n{fileData}\n\n")

内容的提问来源于stack exchange,提问作者Si2sa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:06:04