Python读取.dat文件出现乱码,是否导致文件损坏?
问题分析与解决
- 文件没损坏:你只是读取方式错误,原文件没有被修改或损坏。
- 核心问题:存储3D坐标的.dat文件几乎都是二进制格式,但你用文本编码(
ISO-8859-1)去读取,把二进制字节强行解码成文本字符,才会出现那些乱码(\xad、奇怪字母都是字节被错误解析的结果)。 - 正确处理方式:
- 如果是纯文本格式的.dat(每行是x/y/z数值):先修正代码里的拼写错误(
readLines()改成readlines()),再尝试换成utf-8编码读取; - 如果是二进制格式的.dat:用二进制模式打开,再根据文件具体格式解析,比如用
struct模块处理:path = '/path/to/dat-file.dat' import struct coords = [] with open(path, 'rb') as f: # 示例:假设每个坐标是3个float类型,每个占4字节 while chunk := f.read(12): x, y, z = struct.unpack('fff', chunk) coords.append((x, y, z)) print(coords)
- 如果是纯文本格式的.dat(每行是x/y/z数值):先修正代码里的拼写错误(
- 关键提醒:先搞清楚你的.dat文件具体格式(比如是自定义二进制、PLY二进制版还是其他),不同格式的解析逻辑不一样,得对应处理。
内容的提问来源于stack exchange,提问作者mchd
相关产品推荐
相关产品推荐

