**由于对文档进行处理的时候要把txt合并成一个文集,或者是txt转化为word文档进行保管,但是word有/点不好就是每次打开贼费时间(不排除我的机械硬盘太烂的可能),再加上每次打开txt,ctrl+c,ctrl+v,关闭txt,新建docx,重命名,ctrl+v,ctrl+s,关闭文件,如此反复,实在是太慢了,网上又没有看到现成的轮子,所以萌生了自己造个木头轮子的想法,下面是我这个大菜逼的代码,仅供参考.**话说百度云现在还不和谐docx呢。。
import docx
from docx.oxml.ns import qn
import os
root = './txt/' # 相对路径
docxpath ='./txt/docx/'
# TODO 批量读取root下的文件名
def bulk_readname():
fileNames = os.listdir(root) # 读取文件夹下所有的txt的文件名
txtFiles = []
for i in range(len(fileNames)):
if '.txt' in fileNames[i]:
txtFiles.append(fileNames[i])
# 看一下是不是全部都找到了
print(txtFiles)
return txtFiles # 返回的是一个列表
# TODO 读取txt文件并以字符串格式返回
def bulk_read(input_fileName):
path = root + input_fileName
with open(path, encoding='utf-8') as f:
str = f.read()
# 下面注释的代码暂未测试(给str自动换行)
# L = list(str)
# for j in L:
# if j/50 == 0:
# L.insert(j, '/n')
return str
# TODO 在一个txt内追加文本
def append_text(input_str, textName):
with open(root+textName+'.txt', 'a+', encoding='utf-8') as f: # 'a'是继续写入,'w'是刷新后写入,'a+'追加,可读可写
f.write(input_str)
output_str = f.read()
return output_str
# TODO 创建docx文件并写入数据
def write_docx(input_str, buildFile):
doc = docx.Document()
# 设置正文中文字体
microsoft_font = u'微软雅黑' # u 表示后面的字符串以 Unicode 格式进行编码
area = qn('w:eastAsia')
doc.styles['Normal'].font.name = microsoft_font
doc.styles['Normal']._element.rPr.rFonts.set(area, microsoft_font)
paraObj1 = doc.add_paragraph(input_str)
path = docxpath + buildFile + '.docx'
doc.save(path)
# -------------------------------------------------------------------------------------------
def merge_file(name):
# 合并文件
fileNames = bulk_readname()
for fileName in range(len(fileNames)):
out = bulk_read(fileNames[fileName])
append_text(out, name)
def bulk_RW():
fileNames = bulk_readname()
for fileName in range(len(fileNames)):
out = bulk_read(fileNames[fileName])
print(out)
write_docx(out, fileNames[fileName][:-4]) # [:-4]消除.txt
if __name__ == '__main__':
# 合并文件
# merge_file('合集')
# 实现批量txt2docx
# bulk_RW()
pass