Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将文件夹中的所有DAT文件转换为CSV文件_Python_Python 3.x - Fatal编程技术网

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

Python 将文件夹中的所有DAT文件转换为CSV文件,python,python-3.x,Python,Python 3.x,我在谷歌上搜索了一下,找到了下面的脚本,将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\\" onlyf

我在谷歌上搜索了一下,找到了下面的脚本,将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)
代码看起来可以正常工作,逻辑看起来也很合理,但当我运行它时,会收到以下错误消息:

异常:无效签名: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)

n
根据您的代码是原始的,或者换句话说是字节。这可能是错误的原因。在使用writer写入之前,您需要将逻辑设置到位,以将其转换为正确的数据类型(str、int等)。此外,请检查此答案此代码中唯一可能引发此错误的行是
idlsave.read(…)
。该错误意味着您的
.DAT
文件的格式不是
idlsave
可以处理的格式。您假定所有
.DAT
文件都相同。这是一个相当通用的文件扩展名。你有一个文件不是你想象的那样。