本文目录导读:

我来介绍几种合并多个文档的方法,包括不同格式的文档合并:
合并PDF文件
Python方法(使用PyPDF2)
import PyPDF2
import os
def merge_pdfs(pdf_list, output_filename):
merger = PyPDF2.PdfMerger()
for pdf in pdf_list:
merger.append(pdf)
merger.write(output_filename)
merger.close()
print(f"合并完成:{output_filename}")
# 使用示例
pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']
merge_pdfs(pdf_files, 'merged.pdf')
使用pdfkit(需要wkhtmltopdf)
import pdfkit
def merge_pdfs_with_pdfkit(pdf_list, output_filename):
# 创建临时HTML文件
html_content = ""
for pdf in pdf_list:
html_content += f'<iframe src="{pdf}"></iframe><hr>'
with open('temp.html', 'w') as f:
f.write(html_content)
pdfkit.from_file('temp.html', output_filename)
合并Word文档
Python方法(使用python-docx)
from docx import Document
import os
def merge_docx(docx_list, output_filename):
merged_doc = Document()
for i, docx_file in enumerate(docx_list):
doc = Document(docx_file)
# 如果不是第一个文档,添加分页符
if i > 0:
merged_doc.add_page_break()
# 复制内容
for element in doc.element.body:
merged_doc.element.body.append(element)
merged_doc.save(output_filename)
print(f"合并完成:{output_filename}")
# 使用示例
word_files = ['doc1.docx', 'doc2.docx', 'doc3.docx']
merge_docx(word_files, 'merged_document.docx')
合并文本文件
Python方法
def merge_text_files(text_files, output_filename, separator="\n\n"):
try:
with open(output_filename, 'w', encoding='utf-8') as outfile:
for i, text_file in enumerate(text_files):
with open(text_file, 'r', encoding='utf-8') as infile:
content = infile.read()
outfile.write(content)
# 如果不是最后一个文件,添加分隔符
if i < len(text_files) - 1:
outfile.write(separator)
print(f"合并完成:{output_filename}")
except Exception as e:
print(f"出错:{e}")
# 使用示例
text_files = ['note1.txt', 'note2.txt', 'note3.txt']
merge_text_files(text_files, 'merged_text.txt')
批量合并所有格式文件
通用Python脚本
import os
import shutil
from pathlib import Path
def merge_documents_with_metadata(folder_path, output_folder):
"""
合并文件夹中的所有文档,自动识别格式
"""
# 创建输出文件夹
os.makedirs(output_folder, exist_ok=True)
# 获取所有支持的文档文件
supported_extensions = ('.txt', '.md', '.pdf', '.docx')
files_to_merge = []
for ext in supported_extensions:
files = list(Path(folder_path).glob(f'*{ext}'))
files_to_merge.extend(files)
# 按文件名排序
files_to_merge.sort()
# 按扩展名分组并合并
for ext in supported_extensions:
ext_files = [f for f in files_to_merge if f.suffix == ext]
if ext in ['.txt', '.md']:
# 合并文本文件
output_file = os.path.join(output_folder, f'merged{ext}')
merge_text_files([str(f) for f in ext_files], output_file)
elif ext == '.pdf':
# 合并PDF文件
from PyPDF2 import PdfMerger
merger = PdfMerger()
for pdf_file in ext_files:
merger.append(str(pdf_file))
merger.write(os.path.join(output_folder, 'merged.pdf'))
merger.close()
elif ext == '.docx':
# 合并Word文档
merge_docx([str(f) for f in ext_files],
os.path.join(output_folder, 'merged.docx'))
print(f"所有文档合并完成,输出到:{output_folder}")
# 使用示例
merge_documents_with_metadata('C:/documents/', 'C:/merged_output/')
命令行批处理脚本
Windows批处理
@echo off
:: 合并TXT文件
copy /b *.txt merged.txt
:: 合并PDF文件(需要安装pdftk)
pdftk *.pdf cat output merged.pdf
:: 合并Word文件(使用Windows脚本)
powershell -command "& { '合并Word文档...' }"
Linux/Mac Bash
#!/bin/bash # 合并TXT文件 cat *.txt > merged.txt # 合并PDF文件(需要pdftk) pdftk *.pdf cat output merged.pdf # 合并所有文件为PDF(使用libreoffice) soffice --headless --convert-to pdf *.docx *.doc
高级功能:带元数据的合并脚本
import json
from datetime import datetime
def advanced_merge_with_metadata(files, metadata=None):
"""
高级合并功能,可以添加元数据
"""
metadata = metadata or {
'created_by': 'Python Script',
'creation_date': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'total_files': len(files)
}
# 创建输出文件名
output_name = f"merged_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
# 根据文件类型选择合并方法
extensions = set(Path(f).suffix.lower() for f in files)
if extensions == {'.pdf'}:
merge_pdfs(files, f'{output_name}.pdf')
elif extensions == {'.docx'}:
merge_docx(files, f'{output_name}.docx')
elif extensions <= {'.txt', '.md'}:
merge_text_files(files, f'{output_name}.txt')
else:
# 混合格式,转换并合并
print("混合格式需要先转换,请指定输出格式")
# 保存元数据
with open(f'{output_name}_metadata.json', 'w') as f:
json.dump(metadata, f, indent=2, ensure_ascii=False)
print(f"合并完成,元数据已保存")
使用建议
-
安装所需库:
pip install PyPDF2 python-docx pdfkit
-
选择合适的方法:
- PDF文件:使用PyPDF2或pdftk
- Word文件:使用python-docx
- 纯文本:使用Python内置函数
-
处理大文件:考虑内存限制,使用流式处理
-
出错处理:添加异常处理和日志记录
需要根据具体需求选择合适的方法,并确保安装了必要的依赖库。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播