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

想法:

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)

 

  • 11
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值