本代码根据原博主代码改编,主要解决原代码生成的csv文件名带有".txt"问题,并增加注释
(附修改后的完整代码)
原博主:
(11条消息) Python将文件夹目录下所有txt格式文件转成csv文件_hjw2719的博客-CSDN博客
修改前代码生成的文件名:
解决方法:
在 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)