Python脚本错误报告文件绝对路径为当前工作目录而非实际目录
问题根源
你遇到的核心问题是:os.listdir(parent_dir)仅返回目录下的文件名/文件夹名,不包含完整路径。后续用os.path.abspath(track)或Path(track)处理纯文件名时,Python会默认把当前工作目录(CWD)与文件名拼接,导致路径指向错误位置。
另外,os.path.dirname(str(track))返回空值是正常行为——因为track只是纯文件名,没有上级目录信息,dirname对这类输入自然返回空字符串。
解决方案
修改代码,让tracks列表存储文件的完整路径,而非仅文件名:
# 遍历目录并生成完整路径 tracks = [os.path.join(parent_dir, f) for f in os.listdir(parent_dir)] # 过滤仅保留文件(用完整路径判断) tracks = [f for f in tracks if os.path.isfile(f)] # 统计结果 print(f"Found {len(tracks)} unsorted files in parent directory.") # 打印当前工作目录(用于排查) print(f"CWD: {Path.cwd()}") # 打印每个文件的绝对路径 for track in tracks: # 直接打印完整路径即可,无需额外转换 print(track) # 或者用Path对象处理(可选) # p_track = Path(track) # print(p_track.absolute())
关键说明
os.path.join(parent_dir, f)会自动根据系统拼接正确的路径分隔符(Windows为\,Linux/macOS为/),避免手动拼接parent_dir+'/'+f的跨平台问题。- 过滤文件时,直接用完整路径传入
os.path.isfile,判断更准确。 - 处理完成后,
tracks中的每个元素都是文件的完整路径,后续操作会直接指向正确的Test_Music目录。
修正后输出示例
Found 11 unsorted files in parent directory. CWD: C:\Users\im\Desktop\Programming C:\Users\im\Desktop\Programming\Music\Test_Music\01 Sanctuary 1.mp3 C:\Users\im\Desktop\Programming\Music\Test_Music\01 Soft.mp3 ...(其余文件路径)
内容的提问来源于stack exchange,提问作者impactmechanics
相关产品推荐
相关产品推荐

