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)
上一篇: 冒泡排序算法
下一篇: 如何搭建一个简单的服务器?