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的结果:

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐