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

Python os库为何对单个文件报错,其余三个文件却正常?

问题解决:FileNotFoundError处理文件时找不到指定文件

问题原因

你调用os.stat(val)时传入的只是文件名,但脚本的当前工作目录并不是音频文件所在的E:\data\audio\A023\,Python会默认在脚本运行的目录(E:\data\mp3_garage\)下查找文件。前三个文件可能刚好存在于该目录,而第四个文件仅存于目标音频目录中,因此触发报错。

修正方案

必须将目录路径与文件名拼接成完整文件路径后,再传入os.stat()。推荐使用os.path.join()方法拼接路径,它会自动适配不同系统的路径分隔符,避免手动拼接字符串出现的格式问题。

修正后的代码

import os

siteID = 'A023' #This must match audio and NVSPL directories and filenames
drive_audio = "E"
dirName_audio = drive_audio + ':\\data\\audio\\' + siteID + '\\'

fileNames_MP3 = [file for file in os.listdir(dirName_audio)] 

# 打印文件名
for val in fileNames_MP3:
    print(val)
print('\n')
    
# 拼接完整路径后获取文件大小
for val in fileNames_MP3:
    full_path = os.path.join(dirName_audio, val)
    file_stats = os.stat(full_path)
    print(val, file_stats.st_size)

额外优化建议

  • 可以直接在列表推导式中生成完整路径,减少后续拼接步骤:
    filePaths_MP3 = [os.path.join(dirName_audio, file) for file in os.listdir(dirName_audio)]
    
  • 可添加os.path.exists(full_path)判断文件是否存在,进一步避免意外报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:17:45