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

使用pandas.read_csv()读取.dat文件报unicode错误问题求助

问题根因说明

文件夹名称包含数字完全不会引发文件读取错误,无需在该点上耗费排查精力。你遇到的错误分两个独立阶段,对应不同根因:

  • 初始的SyntaxError: 'unicodeescape' codec can't decode bytes是Windows路径字符串转义问题
  • 路径调整后出现的EmptyDataError: No columns to parse from file核心原因是.dat并非标准结构化文本格式,你默认用面向文本表格的read_csv读取,和文件实际格式不匹配,和编码、分隔符参数没有直接关系。

分步排查方案

第一步:彻底解决路径转义问题,确认文件可正常访问

不要反复试单引号/双引号、反斜杠数量这类碰运气的写法,用以下代码100%规避转义问题,同时确认文件本身有效:

from pathlib import Path
import os

# 直接复制资源管理器里的文件路径,把单反斜杠换成正斜杠即可,无需加r标记
file_path = Path("C:/你的实际存储路径/Data.dat")

# 先做基础校验
print("文件是否存在:", file_path.exists())
print("文件大小(字节):", os.path.getsize(file_path))
  • 如果返回文件是否存在:False,说明路径抄写错误,重点检查是否开启了系统的文件后缀隐藏(比如实际文件名为Data.dat.txt,你漏写了.txt后缀)、文件夹名是否有拼写错误。
  • 如果文件大小为0,说明文件本身是空文件,无需继续后续读取操作。

第二步:判断文件格式,选择对应读取方式

.dat是通用后缀,不代表特定存储格式,你之前直接套用read_csv默认参数是典型的方法错配,先判断文件是纯文本格式还是二进制格式:

# 读取文件前100个字节判断格式
with open(file_path, 'rb') as f:
    first_100_bytes = f.read(100)
print("文件头字节内容:", first_100_bytes)

场景1:输出内容以可识别的常规字符为主,少量特殊字符

说明是纯文本类格式,不要直接用pandas读取,先原生读取前5行确认实际分隔规则:

with open(file_path, 'r', encoding='latin-1') as f:
    for line_num in range(5):
        line = f.readline()
        print(f"第{line_num}行原始内容:", repr(line))

根据打印结果确认行分隔符、列分隔符、需要跳过的头部说明行数量,再把对应参数传给pd.read_csv即可,无需盲目试sep='\s+'这类通用参数。

场景2:输出内容以不可打印的乱码字节为主

说明是二进制存储格式,这类存储常见于其他编程语言(C/Matlab/Numpy)导出的数值型.dat文件,read_csv这类文本读取方法完全无法解析,改用numpy按二进制数值读取即可:

import numpy as np
import pandas as pd

# 先尝试按32位整数读取,若数值不合理可替换dtype为int16/int64/float32等匹配实际存储类型
data_arr = np.fromfile(file_path, dtype=np.int32)
print("读取数组长度:", len(data_arr))
print("前10个数值:", data_arr[:10])

# 读取正常后转成pandas结构即可
df = pd.DataFrame(data_arr)

之前尝试方案无效的原因说明
  • 原始字符串标记r仅能规避大部分转义问题,若路径书写时存在片段缺失、后缀错误,依然会定位到错误文件
  • 路径开头加双反斜杠是局域网UNC共享路径的写法,读取本地磁盘文件时使用会直接导致路径定位错误
  • 出现EmptyDataError时优先排查文件格式是否匹配,而非反复调整编码、sep、skiprows参数,二进制文件无论怎么调整文本读取参数都无法正常解析。

内容的提问来源于stack exchange,提问作者Bhanu Chander

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:09:22