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

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实现:
    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))
    
    Python 3.4及以上版本也可以用更简洁的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:39:13