Python自动化办公之文件批量处理:10分钟实现多格式转换与整理!

文摘   2024-12-10 16:01   广西  

大家好,今天带来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("批量处理完成!")

七、性能优化与常见问题解决

性能优化

  • 批量处理:尽可能将任务拆解成批量操作,利用多线程或多进程提高速度。

  • 文件缓存:处理较大的文件时,可通过临时文件减少内存占用。


常见问题

  1. 中文乱码:确保文件编码格式正确,推荐使用utf-8

  2. 格式兼容性:不同办公软件版本间的兼容性问题,需提前测试。

  3. 图片转换失败:检查图片文件格式是否支持。


文件批量处理是日常办公的常见需求,掌握这些技巧能够大幅提升工作效率!

养颜小课堂
分享养颜护肤知识,共享美丽人生。 专注于成长类文章的创作领域。
 最新文章