将文件夹中的所有DAT文件转换为CSV文件



我在谷歌上搜索了一下,发现了下面的脚本,将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'

所有文件名和扩展名都是大写的。不确定这是否有什么不同。我在谷歌上搜索了这个错误,没有找到任何有用的东西。

感谢Anil_M,这帮了我很多忙!这是我的最终解决方案。

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":
with open(join(dat_folder + fullfilename)) as f:
with open(join(csv_folder, file_name + ".CSV"), "w") as f1:
for line in f:
f1.write(line)

最新更新