【发布时间】:2018-10-26 15:27:48
【问题描述】:
我用谷歌搜索了一下,发现了下面的脚本,将 DAT 文件转换为 CSV 文件。
import csv
import idlsave
from os import listdir
from os.path import isfile, join, splitext
dat_folder = "C:\\Users\\ryans\\OneDrive\\Desktop\\dat\\"
csv_folder = "C:\\Users\\ryans\\OneDrive\\Desktop\\csv\\"
onlyfilenames = [f for f in listdir(dat_folder) if isfile(join(dat_folder,f))]
for fullfilename in onlyfilenames:
file_name, file_extension = splitext(fullfilename)
if file_extension == ".DAT":
input_file = idlsave.read(dat_folder + fullfilename)
n = input_file["raw"]
with open(join(csv_folder, file_name + ".CSV"), "w", newline='') as f:
writer = csv.writer(f)
writer.writerows(n)
代码看起来可以运行,逻辑看起来很合理,但是当我运行它时,我收到以下错误消息:
Exception: Invalid SIGNATURE: b'10'
所有文件名和扩展名都是大写的。不确定这是否有任何区别。我用谷歌搜索了这个错误,没有找到任何有用的东西。
【问题讨论】:
-
n根据您的代码是原始的,或者换句话说是字节。这可能是错误的原因。在使用 writer 编写代码之前,您需要设置一个逻辑以将其转换为适当的数据类型(str、int 等)。 -
这段代码中唯一可以抛出这个错误的行是
idlsave.read(...)。并且该错误意味着您的.DAT文件不是idlsave可以处理的格式。 -
您假设所有
.dat文件都是相同的。这是一个相当通用的文件扩展名。你得到了一个与你想象的不同的文件。
标签: python python-3.x