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

使用datatable读取CSV遇双错误,求批量合并25个CSV的解决方案

问题:datatable读取本地CSV文件失败及批量合并方案

想用datatable库批量合并25个CSV文件(因该库处理速度快),但读取第一个文件时连续报错,试过路径转义、更换斜杠、添加r前缀等方法仍未解决。


1. 初始代码的Unicode转义错误

代码:

import time
import datatable as dt
print(dt.__version__)

df_2016_1 = dt.fread("C:\Users\HP\Desktop\City of Toronto - Parking Data\Parking_Tags_Data_2016_1.csv")

报错信息:

File "<ipython-input-31-e1b12aa55c73>", line 5
    df_2016_1 = dt.fread("C:\Users\HP\Desktop\City of Toronto - Parking Data\Parking_Tags_Data_2016_1.csv")
                         ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

2. 路径转义后文件不存在错误

修改后代码:

import time
import datatable as dt
print(dt.__version__)

df_2016_1 = dt.fread("C:\\Users\\HP\\Desktop\\City of Toronto - Parking Data\\Parking_Tags_Data_2016_1.csv")

报错信息:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-29-50d21994b471> in <module>
----> 1 df_2016_1 = dt.fread("C:\\Users\\HP\\Desktop\\City of Toronto - Parking Data\\Parking_Tags_Data_2016_1.csv")
      2 

1 frames
/usr/local/lib/python3.8/dist-packages/datatable/utils/fread.py in _resolve_source_file(file, tempfiles)
    197             return _resolve_archive(xpath, ypath, tempfiles)
    198         else:
--> 199             raise ValueError("File %s`%s` does not exist"
    200                              % (escape(xpath), escape(ypath)))
    201     if not os.path.isfile(file):

ValueError: File /content/C:\Users\HP\Desktop\City of Toronto - Parking Data\Parking_Tags_Data_2016_1.csv does not exist

核心原因与解决方法

从第二个报错的路径/content/C:\Users\...可以看出:代码运行在Colab或类似云端环境,但直接使用了Windows本地文件路径,云端无法访问本地磁盘文件。

分场景解决:

场景1:本地Python环境运行

解决路径转义问题即可,两种方式二选一:

  • 使用原始字符串前缀r(推荐):
    df_2016_1 = dt.fread(r"C:\Users\HP\Desktop\City of Toronto - Parking Data\Parking_Tags_Data_2016_1.csv")
    
  • 将反斜杠替换为正斜杠:
    df_2016_1 = dt.fread("C:/Users/HP/Desktop/City of Toronto - Parking Data/Parking_Tags_Data_2016_1.csv")
    

场景2:云端环境(如Colab)运行

需要先将本地文件上传到云端,再读取:

  1. 直接上传单个/多个文件:
    from google.colab import files
    uploaded = files.upload()
    # 上传完成后,用文件名读取
    df_2016_1 = dt.fread("Parking_Tags_Data_2016_1.csv")
    
  2. 挂载Google Drive(适合批量文件):
    from google.colab import drive
    drive.mount('/content/drive')
    # 替换为你Drive中的文件路径
    df_2016_1 = dt.fread("/content/drive/MyDrive/City of Toronto - Parking Data/Parking_Tags_Data_2016_1.csv")
    

批量合并25个CSV的优化代码

解决单个文件读取问题后,可通过以下代码批量合并:

import datatable as dt
import glob

# 根据运行环境选择路径匹配方式
# 本地环境:
file_paths = glob.glob(r"C:\Users\HP\Desktop\City of Toronto - Parking Data\Parking_Tags_Data_*.csv")
# 云端环境(文件在当前目录):
# file_paths = glob.glob("Parking_Tags_Data_*.csv")
# 云端环境(文件在Drive):
# file_paths = glob.glob("/content/drive/MyDrive/City of Toronto - Parking Data/Parking_Tags_Data_*.csv")

# 批量读取所有CSV并合并
merged_df = dt.rbind(*[dt.fread(path) for path in file_paths])

# 保存合并后的文件
merged_df.to_csv("merged_parking_tags_data.csv")

内容的提问来源于stack exchange,提问作者Ms. Baker_Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:45:41