【问题标题】:Convert all DAT files in a folder to CSV files将文件夹中的所有 DAT 文件转换为 CSV 文件
【发布时间】: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 等)。
  • 也可以查看这个答案stackoverflow.com/questions/36845032/…
  • 这段代码中唯一可以抛出这个错误的行是idlsave.read(...)。并且该错误意味着您的.DAT 文件不是idlsave 可以处理的格式。
  • 您假设所有.dat 文件都是相同的。这是一个相当通用的文件扩展名。你得到了一个与你想象的不同的文件。

标签: python python-3.x


【解决方案1】:

感谢 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)

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多