欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python将文件夹目录下所有txt格式文件转成csv文件

程序员文章站 2022-03-31 11:08:55
...

想法:

1.创建list存储文件夹目录下所有txt文件路径;

2.在原txt文件路径下创建.csv文件,文件名同txt文件名,运用csv.writer将txt文件数据写入.csv文件;

3.利用readlines()函数逐行读取txt文件数据,其数据类型是list类,内容为字符串;

4.由于3中list的元素是包含每行内容的大字符串,需要用split函数将各个数据分割出来;

5.txt中每行每列的数据可用二维list存储,可用二层循环嵌套实现;

6.用csv.writer().writerow创建表头,然后用csv.writer().writerows将二维list写入csv文件。

细节处理:

1.txt每行数据的大字符串中有换行符和空格符,需要去除;

2.txt每行数据的大字符串split分割后的list中也有空格符,也需要去除。

下面上代码:

import os
import csv

# ============================说明==================================
# 把要转换成csv文件的txt文件路径复制到rootdir下,运行程序后,在..\\**\\日期\\**\\**\\recordvideo
# 目录下会生成txt文档对应的csv格式文档,且带表头。
# ============================说明==================================

rootdir = 'G:\\**\\235\\**'

def findtxt(path, ret):
    """Finding the *.txt file in specify path"""
    filelist = os.listdir(path)
    for filename in filelist:
        de_path = os.path.join(path, filename)
        if os.path.isfile(de_path):
            if de_path.endswith(".txt"):  # Specify to find the txt file.
                ret.append(de_path)
        else:
            findtxt(de_path, ret)
def txt2csv(filepath, data):
    with open(filepath + '.csv', 'w', newline='') as csvfile:
        spamwriter = csv.writer(csvfile)
        # 添加csv文件的表头
        spamwriter.writerow(['**', '**', '**', '**'])
        with open(filepath, 'r') as file_object:
            lines = file_object.readlines()
            # 清除lines list中换行符\n, 空格符''
            lines = [x.strip('\n') for x in lines if x.strip() != '']
            for i, line in enumerate(lines):
                data.append([])
                elements = line.split(' ')
                # 清除单行line 中存在的空格符字符串''
                elements = [x for x in elements if x != '']
                for element in elements:
                    data[i].append(element)
        # 将txt文件内容写入csv文件中
        spamwriter.writerows(data)

if __name__ == "__main__":
    ret = []
    findtxt(rootdir, ret)
    for ret_ in ret:
        data = []
        txt2csv(ret_, data)

 

相关标签: pythonwe