大家好,今天带来Python自动化办公系列的文件批量处理教程。用Python几行代码,快速实现多种文件格式的转换与高效管理!
一、基础环境准备
1. 安装必要库
# 运行以下命令安装相关依赖
pip install pandas openpyxl pdf2image PyPDF2 docx
# 引入相关模块
import os
import pandas as pd
from pdf2image import convert_from_path
from PyPDF2 import PdfReader, PdfWriter
from docx import Document
2. 文件操作工具函数
def list_files(folder_path, extensions=None):
"""列出指定文件夹中所有符合扩展名的文件"""
if extensions is None:
extensions = ['.pdf', '.docx', '.xlsx', '.csv']
return [
os.path.join(folder_path, f)
for f in os.listdir(folder_path)
if any(f.lower().endswith(ext) for ext in extensions)
]
二、Excel文件处理
1. 合并多个Excel文件
def merge_excel_files(folder_path, output_file):
"""合并文件夹中的所有Excel文件"""
files = list_files(folder_path, extensions=['.xlsx', '.xls'])
merged_df = pd.DataFrame()
for file in files:
df = pd.read_excel(file)
merged_df = pd.concat([merged_df, df], ignore_index=True)
merged_df.to_excel(output_file, index=False)
print(f"合并完成!保存到 {output_file}")
2. 按条件筛选数据
def filter_excel(file_path, output_file, filter_column, filter_value):
"""根据条件筛选数据"""
df = pd.read_excel(file_path)
filtered_df = df[df[filter_column] == filter_value]
filtered_df.to_excel(output_file, index=False)
print(f"筛选完成!保存到 {output_file}")
三、PDF文件处理
1. 提取PDF页面
def extract_pdf_pages(pdf_path, output_path, start_page, end_page):
"""提取PDF的指定页"""
reader = PdfReader(pdf_path)
writer = PdfWriter()
for i in range(start_page - 1, end_page):
writer.add_page(reader.pages[i])
with open(output_path, 'wb') as output_pdf:
writer.write(output_pdf)
print(f"提取完成!保存到 {output_path}")
2. 转换PDF为图片
def pdf_to_images(pdf_path, output_folder):
"""将PDF每页转换为图片"""
pages = convert_from_path(pdf_path)
for i, page in enumerate(pages):
output_path = os.path.join(output_folder, f"page_{i + 1}.png")
page.save(output_path, 'PNG')
print(f"保存图片:{output_path}")
四、Word文件处理
1. 提取Word内容
def extract_word_text(docx_path):
"""提取Word文档中的文字内容"""
doc = Document(docx_path)
text = '\n'.join([para.text for para in doc.paragraphs])
print(f"文档内容:\n{text}")
return text
2. 批量修改Word文件内容
def batch_replace_word(folder_path, replacements):
"""批量替换Word文档中的文字"""
files = list_files(folder_path, extensions=['.docx'])
for file in files:
doc = Document(file)
for para in doc.paragraphs:
for old, new in replacements.items():
if old in para.text:
para.text = para.text.replace(old, new)
doc.save(file)
print(f"修改完成:{file}")
五、批量文件转换
1. CSV转Excel
def csv_to_excel(csv_file, output_file):
"""将CSV文件转换为Excel"""
df = pd.read_csv(csv_file)
df.to_excel(output_file, index=False)
print(f"转换完成!保存到 {output_file}")
2. 文件夹批量转换
def batch_convert_csv_to_excel(folder_path):
"""将文件夹中的所有CSV文件转换为Excel"""
files = list_files(folder_path, extensions=['.csv'])
for file in files:
output_file = file.replace('.csv', '.xlsx')
csv_to_excel(file, output_file)
六、实用工具函数
1. 归档整理
def organize_files_by_extension(folder_path):
"""按文件扩展名整理文件夹"""
files = os.listdir(folder_path)
for file in files:
ext = os.path.splitext(file)[1][1:]
ext_folder = os.path.join(folder_path, ext)
if not os.path.exists(ext_folder):
os.mkdir(ext_folder)
os.rename(
os.path.join(folder_path, file),
os.path.join(ext_folder, file)
)
print(f"移动文件:{file} 到 {ext_folder}")
2. 多线程处理
from concurrent.futures import ThreadPoolExecutor
def process_files_multithread(files, process_function):
"""使用多线程批量处理文件"""
with ThreadPoolExecutor() as executor:
executor.map(process_function, files)
print("批量处理完成!")
七、性能优化与常见问题解决
性能优化
批量处理:尽可能将任务拆解成批量操作,利用多线程或多进程提高速度。
文件缓存:处理较大的文件时,可通过临时文件减少内存占用。
常见问题
中文乱码:确保文件编码格式正确,推荐使用
utf-8
。格式兼容性:不同办公软件版本间的兼容性问题,需提前测试。
图片转换失败:检查图片文件格式是否支持。
文件批量处理是日常办公的常见需求,掌握这些技巧能够大幅提升工作效率!