背景:因为一个项目需要,要将一个文件夹中所有txt文件进行处理,删除空行和转化为表格用word和excel都能做,但一个文件夹中有几十上百个文件那就另当别论了,太过于耗时耗力,于是突发奇想用一个python程序解决。
话不多说,直接代码:
#用到的两个包,可能需要下载,用pip install xlwt可完成
import os
import xlwt
#这个函数是做删除空行
def deleteSpaceLines(dirname):
for maindir, subdir, file_name_list in os.walk(dirname):
#print("1:",maindir) # 当前主目录
#print("2:",subdir) # 当前主目录下的所有目录
#print("3:",file_name_list) # 当前主目录下的所有文件
#上面三句我给他注释掉了,是一个可有可无的测试语句
#遍历文件夹中的所有文件,并进行相应操作
for filename in file_name_list:
path = os.path.join(maindir, filename) # 合并成一个完整路径
txt = []
f1 = open(path,'r',encoding='ansi') # 我的编码格式是ASNI,这个要视情况而定
for line in f1.readlines():
if line != '\n':
txt.append(line)
f1.close()
os.remove(path) #将原文件先删掉
f2 = open(path,'w',encoding='ansi')
f2.write(''.join(txt)) #把处理好的文本重新写入
f2.close()
#将所有文件转化为表格并存入指定路径
def change(dirname,changePath):
for maindir, subdir, file_name_list in os.walk(dirname):
for filename in file_name_list:
file = xlwt.Workbook(encoding='ansi')
# 新建一个sheet
sheet = file.add_sheet(filename)
path = os.path.join(maindir, filename)
i = 0
j = 0
excelLine = []
f = open(path,'r',encoding='ansi')
for line in f.readlines():
if i % 5 == 0 and len(excelLine) == 5:
#我们需要的结果是原txt文件的每五行写入表格的一行中
for j in range(0, 5):
sheet.write(i//5, j, excelLine[j]) #excel中的行、列也是从0开始的
excelLine = []
excelLine.append(line)
else:
excelLine.append(line)
i += 1
f.close()
file.save(changePath + '\\' + filename + 'xls')
#一定不要忘记‘xls’,另外我这个存完后缀是.TXTXLS,用excel也是可以打开的,如果需要标准的.xls,就要先去掉filename的后缀
if __name__ == '__main__':
path = input('请输入原文件路径:')
deleteSpaceLines(path)
changePath = input('请输入转化后的路径:')
change(path,changePath)
完!