Python——dat文件批量合并为同一个csv文件
目的:将文件夹ZW下的所有dat文件(含子文件夹)合并,并保存到results.csv中,便于后续使用excel进行处理与分析。
代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@Time :2019/11/7
@Name :GeekZW
@Contact :1223242863@qq.com
@File :batch_dat_files.py
@Software :Pycharm
"""
import os
import re
def batch_dat2csv(): # 这里面的代码完全不用更改,点击运行即可。
"""
# 函数的功能:将py文件目录下的所有dat文件(包括子目录)转为csv文件
# 第一行为:中文标题
# 其余行为:dat文件中的数据
操作:将batch_dat_files.py放入待处理的文件夹中,即可在文件夹中整理出所有的dat文件内容,并输出为results.csv文件
"""
# step 1:获取当前文件夹的路径
input_path = os.getcwd()
# step 2:获取dat文件的所有路径
dat_files_list = []
for home, dirs, files in os.walk(input_path):
for filename in files:
if '.dat' in filename:
dat_files_list.append(os.path.join(home, filename))
# step 3:读取所有dat文件,并保存至results.csv中
with open('results.csv', 'w', encoding='utf-8') as f:
flag = 0
for dat_file_name in dat_files_list:
with open(dat_file_name, 'r', encoding='gbk') as infile:
for line in infile:
if len(line) >= 3: # 排除dat文件的第一行
if re.compile(u'[\u4e00-\u9fa5]+').search(line): # 筛选出存在中文的一行作为标题
flag += 1 # 由于每个dat文件的中文标题一样,因此只取第一个文件的标题
print("\n正在读取并保存第{0}个dat文件中的数据,文件路径为: \"{1}\"".format(flag, dat_file_name))
if flag == 1:
f.write(','.join(list(filter(None, line.split(' '))))) # 保存标题至results.csv中
elif flag != 1:
continue
else:
f.write(','.join(list(filter(None, line.split(' '))))) # 保存dat内容(第三行)至results.csv中
print("\n\n成功处理所有dat文件!")
if __name__ == "__main__": # 主函数
batch_dat2csv() # 批量dat文件转存为csv文件
运行结果:
最终的csv的结果: