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

Python3.10遍历目录文件提示‘文件不存在’问题求助

问题解决:MP3文件找不到的原因及修复方案

核心问题

你代码里的错误很明确:os.listdir(mp3dir)返回的是mp3files目录下的纯文件名(比如a.mp3),但后续判断os.path.exists(mp3_file)时,Python会在当前工作目录(也就是你运行reader.py的目录)查找这个文件,而不是在mp3files子目录里,所以必然找不到。

修复方案

方案1:用os.path.join拼接路径(兼容Python 3.10)

这是最直接的修复方式,把目录和文件名拼接成完整的相对路径,确保Python能定位到正确的文件位置:

import os

mp3dir = "mp3files"

# 遍历目录下的MP3文件
for mp3_file in os.listdir(mp3dir):
    # 拼接完整的相对路径
    full_path = os.path.join(mp3dir, mp3_file)
    # 用isfile更准确,避免误判目录
    if os.path.isfile(full_path):
        print(f"{mp3_file} 大小:{os.path.getsize(full_path)} 字节")
    else:
        print(f"文件 {mp3_file} 不存在或不是文件。")

方案2:用pathlib(更现代的跨平台路径处理)

Python 3.4+推荐用pathlib,它的面向对象路径处理更直观,天然支持跨平台:

from pathlib import Path

mp3dir = Path("mp3files")

# 遍历目录下的文件(自动排除子目录)
for mp3_file in mp3dir.iterdir():
    if mp3_file.is_file():
        print(f"{mp3_file.name} 大小:{mp3_file.stat().st_size} 字节")
    else:
        print(f"{mp3_file.name} 不是文件。")

额外注意事项

如果你的运行环境工作目录不是mp3reader(比如在上级目录执行python mp3reader/reader.py),上面的相对路径可能还是会出问题。可以通过脚本自身路径来构建绝对路径,彻底解决跨平台和工作目录问题:

  • 用os模块的写法:
    import os
    # 获取脚本所在目录的绝对路径
    script_dir = os.path.dirname(os.path.abspath(__file__))
    mp3dir = os.path.join(script_dir, "mp3files")
    
  • 用pathlib的写法:
    from pathlib import Path
    script_dir = Path(__file__).parent
    mp3dir = script_dir / "mp3files"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:07:10