实践 将多个文本合并为一个文本
思路
首先运用os模块获得多个文本的名称。然后,运用相关包读取这些文件,并汇集在一起。
运用函数安装包:os
合并word文件
将多份在百度网盘中的word文件,合并在一起。代码如下:
import docx
import os
wfile=open("result.txt","w",encoding="utf-8")
os.chdir("E:\eng")
subList=os.listdir(os.getcwd())#总的eng文件夹。
for inum in subList:
os.chdir(f"E:\eng\{inum}")#eng文件夹中的子文件夹。
inumList=os.listdir(os.getcwd())
for idocx in inumList:
print(f"文章{idocx}",file=wfile)
ifile=docx.Document(f"{idocx}")
for p in ifile.paragraphs:
line=p.text
print(line,file=wfile)
print("\n",file=wfile)
wfile.close()
解析如下:
第一步,将百度网盘中的文件下载在电脑上(以下载后的eng文件夹为例,eng文件夹中包含很多子文件夹),和程序文件放在一起(以test.py为例)。
import os
os.chdir("E:\eng")
subList=os.listdir(os.getcwd())#总的eng文件夹。
for inum in subList:
os.chdir(f"E:\eng\{inum}")#eng文件夹中的子文件夹。
inumList=os.listdir(os.getcwd())
print(inumList)
第二步,打开程序包docx,如果没有安装,就用pip安装
pip install python-docx
然后会显示安装成功。
第三步,调用docx包去读取docx文件。
for inum in subList:
os.chdir(f"E:\eng\{inum}")#eng文件夹中的子文件夹。
inumList=os.listdir(os.getcwd())
for idocx in inumList:
print(f"文章{idocx}",file=wfile)#便于区分各个文件
ifile=docx.Document(f"{idocx}")#使用docx包读取文件
for p in ifile.paragraphs:
line=p.text
print(line,file=wfile)#把文件输入wfile文档中
print("\n",file=wfile)
第四步,最后把生成的txt文本,复制粘贴到docx文本中,就可以完成。
当然,可以将代码进一步优化。比如,用docx包生成word,而不是生成txt。如下:
import docx
import os
from docx import Document#创建document对象,即打开一个word 文档
mydocument=Document()
myp=mydocument.add_paragraph(" ")
os.chdir("E:\eng")
subList=os.listdir(os.getcwd())#总的eng文件夹。
for inum in subList:
os.chdir(f"E:\eng\{inum}")#eng文件夹中的子文件夹。
inumList=os.listdir(os.getcwd())
for idocx in inumList:
mydocument.add_heading(f"文章{idocx}",level=0)
ifile=docx.Document(f"{idocx}")#使用docx包读取文件
for p in ifile.paragraphs:
line=p.text
myp.add_run(line)#把段落添加入文件
myp.add_run("\n")
mydocument.save("resulteng.docx")
但是在实践过程中,这段代码没有成功。优化功能没有实现。之后需要补充docx包相关的知识,然后去解决这个问题。