1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Python将.dat文件转换成.csv文件

Python将.dat文件转换成.csv文件

时间:2023-09-21 03:39:59

相关推荐

Python将.dat文件转换成.csv文件

在找数据的时候有时候会找到.dat文件,我发现了两种方式。

第一种很简单,是利用可以打开dat的软件进行转换,但是这种方式在只有一个数据的时候可以使用,数据集多时很不方便。

另一种就是使用python代码,可以将某一目录下的所有文件.dat转换为csv【其实不止这两种,xls、csv、dat等之间转换都可以,看自己的需求】

一、利用数据软件转换

1.sublime+excel

把下载的文件用sublime打开,删掉最上方的标题,另存为.txt文件,用excel打开,再次另存为.csv

2.SPSS

由于SPSS可以打开.dat文件,因此直接在spss中打开,再另存为

二、Python实现

原理:用Python实现的原理就是获取某一目录下的所有文件,分离成文件名和文件类型,当类型为dat的时候就创建一个同名的csv,把dat中的内容写进csv

import ospath_0 =r"D:\" #原文件目录path_1 = r"D:\" #存放目录filelist = os.listdir(path_0) #目录下文件列表for files in filelist:dir_path = os.path.join(path_0, files)#分离文件名和文件类型file_name = os.path.splitext(files)[0] #文件名file_type = os.path.splitext(files)[1] #文件类型#将.dat文件转为.csv文件if file_type=='.dat': #可切换为.xls等file_test = open(dir_path,'rb') #读取原文件new_dir = os.path.join(path_1,str(file_name)+'.csv')#print(new_dir)file_test2 = open(new_dir,'wb') #创建/修改新文件for lines in file_test.readlines():lines=lines.decode()str_data = ",".join(lines.split(' ')) #分隔符依据自己的文件确定file_test2.write(str_data.encode("utf-8"))file_test.close()file_test2.close()

运行结束没有报错的话就会看到相应目录下多出了对应名字的csv文件

三、问题小结

1.报错'utf-8' codec can't decode byte 0xff in position 25: invalid start byte

看有很多小伙伴提到这个报错的问题,就去查了一下,直接贴解决方案,就是改一句话

把for循环中的这一行(代码行号21),

lines=lines.decode()

更改为

lines=lines.decode("utf8","ignore")

应该就能解决了

具体原因参考其他博主的博客/sinat_25449961/article/details/83150624

2.dat转csv后打开乱码

这个的代码解决方法没有找到。

1.有一种可能性是该dat文件是一种特殊文件,例如视频文件等,因此本身就是无法用csv正常显示的,打开后的乱码问题也无法解决。如果只是随便找的一个dat结尾的数据文件来进行转换,大概率是这个原因

2.尝试将utf-8替换为别的编码方式,例如gbk、gb2312等,看有没有可以正常显示的

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。