pandas读取CSV报No such file or directory(文件存在)如何解决
问题根因
报错和跨系统路径分隔符配置无关,核心是路径拼接时遗漏了目录与文件名之间的分隔符。
现有代码直接拼接字符串后,实际访问的文件路径是:D:/ecg/ptb-xl-a-large-publicly-available-electrocardiography-dataset-1.0.1ptbxl_database.csv
目录名和CSV文件名被直接连为一体,系统自然无法定位到目标文件。
修复方案
- 快速修复(仅适用于当前Windows环境)
在定义path变量时,末尾手动补充分隔符即可,修改后代码:import pandas as pd import ast path = 'D:/ecg/ptb-xl-a-large-publicly-available-electrocardiography-dataset-1.0.1/' sampling_rate=100 Y = pd.read_csv(path+'ptbxl_database.csv', index_col='ecg_id') Y.scp_codes = Y.scp_codes.apply(lambda x: ast.literal_eval(x)) - 通用推荐方案(全平台兼容,从根源避免路径拼接错误)
不要手动拼接字符串路径,用Python标准库提供的路径处理方法自动适配分隔符,不会出现漏写分隔符、转义字符错误等问题。
用os.path.join实现:
Python 3.4及以上版本也可以用更简洁的import pandas as pd import ast import os path = 'D:/ecg/ptb-xl-a-large-publicly-available-electrocardiography-dataset-1.0.1' sampling_rate=100 csv_path = os.path.join(path, 'ptbxl_database.csv') Y = pd.read_csv(csv_path, index_col='ecg_id') Y.scp_codes = Y.scp_codes.apply(lambda x: ast.literal_eval(x))pathlib写法:import pandas as pd import ast from pathlib import Path path = Path('D:/ecg/ptb-xl-a-large-publicly-available-electrocardiography-dataset-1.0.1') sampling_rate=100 Y = pd.read_csv(path/'ptbxl_database.csv', index_col='ecg_id') Y.scp_codes = Y.scp_codes.apply(lambda x: ast.literal_eval(x))
关于“是否可以直接在代码中写入文件路径”的说明
完全可以,硬编码文件路径不存在语法层面的限制,只需要注意两个细节:
- Windows系统下如果用反斜杠
\写路径,要么把反斜杠写为双反斜杠\\做转义,要么在路径字符串前加r标记为原始字符串(比如r'D:\ecg\ptbxl_data'),避免反斜杠被识别为转义字符触发路径错误 - 如果代码需要在Windows、macOS、Linux多系统迁移运行,不要硬编码固定盘符和系统专属分隔符,尽量用项目相对路径搭配标准库路径方法拼接
排查技巧:遇到路径类报错时,可以在执行文件读取前先打印拼接后的完整路径,和本地真实文件路径做对比,能快速定位拼接错误。
内容的提问来源于stack exchange,提问作者matt hamde
相关产品推荐
相关产品推荐

