Python将文件夹目录下所有txt格式文件转成csv文件(解决生成文件名带.txt问题)

本代码根据原博主代码改编,主要解决原代码生成的csv文件名带有".txt"问题,并增加注释

(附修改后的完整代码)

原博主:

(11条消息) Python将文件夹目录下所有txt格式文件转成csv文件_hjw2719的博客-CSDN博客

修改前代码生成的文件名:

Python将文件夹目录下所有txt格式文件转成csv文件(解决生成文件名带.txt问题)_第1张图片

解决方法:

在 filepath 处增加 [:-4] 表示删掉字符串后四位,否则创建的csv文件名中会有.txt

with open(filepath[:-4] + '.csv', 'w', newline='') as csvfile:

整体代码

import os
import csv

import numpy as np
import pandas as pd

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

rootdir = r''


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"):
                # 把路径添加到ret数组里
                ret.append(de_path)
        else:
            findtxt(de_path, ret)


def txt2csv(filepath, data):
    # 打开要保存的形式的文件,[:-4]表示删掉字符串后四位,否则创建的csv文件名中会有.txt
    with open(filepath[:-4] + '.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 != '']
                # 删除数组的第一列
                # elements = np.delete(elements, 0, axis=0)
                for element in elements:
                    data[i].append(element)
        # 将txt文件内容写入csv文件中
        # 只保存数组的3000行到10001行
        # new_data = data[3000:10001]

        spamwriter.writerows(data)




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

你可能感兴趣的:(python,开发语言)