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
相关产品推荐
相关产品推荐

