Python增強辦公效率的 11 個實用代碼段
在日常工作中,許多任務(wù)可以通過編程自動化來提高效率。本文將介紹一些實用的 Python 腳本,用于批量創(chuàng)建文件夾、重命名文件、處理 Excel 數(shù)據(jù)、合并 PDF 文件等。這些工具能顯著減少重復(fù)性工作,提升工作效率。

1. 快速生成批量文件夾
工作中經(jīng)常需要創(chuàng)建多個文件夾來分類存儲不同類型的文件。手動創(chuàng)建不僅耗時還容易出錯。利用 Python 可以快速生成批量文件夾。
import os
def create_folders(base_path, folder_names):
    """
    在指定路徑下創(chuàng)建多個文件夾。
    
    :param base_path: 文件夾創(chuàng)建的基礎(chǔ)路徑
    :param folder_names: 要創(chuàng)建的文件夾名稱列表
    """
    for name in folder_names:
        path = os.path.join(base_path, name)
        if not os.path.exists(path):
            os.makedirs(path)
            print(f"創(chuàng)建文件夾 {path}")
# 示例使用
folder_names = ['2023年報表', '2023年會議記錄', '2023年項目文檔']
create_folders('C:\\Users\\YourName\\Documents', folder_names)輸出結(jié)果:
創(chuàng)建文件夾 C:\Users\YourName\Documents\2023年報表
創(chuàng)建文件夾 C:\Users\YourName\Documents\2023年會議記錄
創(chuàng)建文件夾 C:\Users\YourName\Documents\2023年項目文檔2. 批量重命名文件
當有大量文件需要重命名時,手動操作顯然不現(xiàn)實。Python 的 os 模塊可以輕松完成這一任務(wù)。
import os
def rename_files(directory, prefix):
    """
    批量重命名目錄下的所有文件,添加前綴。
    
    :param directory: 需要重命名文件所在的目錄
    :param prefix: 添加到文件名前面的前綴
    """
    for filename in os.listdir(directory):
        old_name = os.path.join(directory, filename)
        new_name = os.path.join(directory, f"{prefix}_{filename}")
        os.rename(old_name, new_name)
        print(f"重命名 {old_name} 為 {new_name}")
# 示例使用
rename_files('C:\\Users\\YourName\\Documents\\2023年報表', '報表')輸出結(jié)果:
重命名 C:\Users\YourName\Documents\2023年報表\file1.xlsx 為 C:\Users\YourName\Documents\2023年報表\報表_file1.xlsx
重命名 C:\Users\YourName\Documents\2023年報表\file2.xlsx 為 C:\Users\YourName\Documents\2023年報表\報表_file2.xlsx3. Excel 數(shù)據(jù)處理
日常工作中經(jīng)常需要處理 Excel 表格數(shù)據(jù)。使用 pandas 庫可以高效地讀取、處理 Excel 文件。
import pandas as pd
def process_excel(file_path):
    """
    讀取并處理 Excel 文件。
    
    :param file_path: Excel 文件路徑
    """
    # 讀取 Excel 文件
    df = pd.read_excel(file_path)
    
    # 處理數(shù)據(jù)
    df['Total'] = df['Quantity'] * df['Price']
    df.dropna(inplace=True)  # 刪除缺失值
    
    # 保存處理后的數(shù)據(jù)
    df.to_excel('processed_data.xlsx', index=False)
# 示例使用
process_excel('C:\\Users\\YourName\\Documents\\sales_data.xlsx')輸出結(jié)果:
- 原始 Excel 文件中的數(shù)據(jù)被讀入 DataFrame。
 - 新增一列 Total 計算銷售額。
 - 刪除包含 NaN 的行。
 - 將處理后的數(shù)據(jù)保存到新文件 processed_data.xlsx 中。
 
4. PDF 文檔合并
經(jīng)常需要將多個 PDF 文件合并成一個文檔。借助于 PyPDF2 庫可以輕松實現(xiàn)該功能。
from PyPDF2 import PdfFileMerger
def merge_pdfs(paths, output):
    """
    合并多個 PDF 文件。
    
    :param paths: PDF 文件路徑列表
    :param output: 輸出文件路徑
    """
    merger = PdfFileMerger()
    
    for pdf in paths:
        merger.append(pdf)
    
    merger.write(output)
    merger.close()
# 示例使用
pdf_paths = ['report_part1.pdf', 'report_part2.pdf', 'report_part3.pdf']
merge_pdfs(pdf_paths, 'complete_report.pdf')輸出結(jié)果:
- complete_report.pdf 文件中包含了三個部分的內(nèi)容。
 
5. 文本內(nèi)容替換
在處理大量文本文件時,經(jīng)常需要批量替換某些內(nèi)容。Python 的 re 模塊提供了強大的正則表達式支持,可以輕松完成這一任務(wù)。
import re
import os
def replace_text_in_files(directory, pattern, replacement):
    """
    在指定目錄下的所有文本文件中替換特定內(nèi)容。
    
    :param directory: 目錄路徑
    :param pattern: 要替換的模式(正則表達式)
    :param replacement: 替換的內(nèi)容
    """
    for filename in os.listdir(directory):
        if filename.endswith('.txt'):
            filepath = os.path.join(directory, filename)
            with open(filepath, 'r') as file:
                content = file.read()
            
            updated_content = re.sub(pattern, replacement, content)
            
            with open(filepath, 'w') as file:
                file.write(updated_content)
                print(f"更新文件 {filepath}")
# 示例使用
directory = 'C:\\Users\\YourName\\Documents\\text_files'
pattern = r'old_text'
replacement = 'new_text'
replace_text_in_files(directory, pattern, replacement)輸出結(jié)果:
更新文件 C:\Users\YourName\Documents\text_files\file1.txt
更新文件 C:\Users\YourName\Documents\text_files\file2.txt6. 發(fā)送郵件自動化
發(fā)送郵件是日常工作的一部分。使用 smtplib 和 email 庫可以自動發(fā)送郵件,節(jié)省時間和精力。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_email(subject, body, to_emails):
    """
    發(fā)送郵件。
    
    :param subject: 郵件主題
    :param body: 郵件正文
    :param to_emails: 收件人郵箱列表
    """
    sender_email = 'your_email@example.com'
    sender_password = 'your_password'
    message = MIMEMultipart()
    message['From'] = sender_email
    message['To'] = ', '.join(to_emails)
    message['Subject'] = subject
    message.attach(MIMEText(body, 'plain'))
    try:
        server = smtplib.SMTP('smtp.example.com', 587)
        server.starttls()
        server.login(sender_email, sender_password)
        text = message.as_string()
        server.sendmail(sender_email, to_emails, text)
        server.quit()
        print("郵件發(fā)送成功")
    except Exception as e:
        print(f"郵件發(fā)送失?。簕e}")
# 示例使用
subject = "本周工作報告"
body = "這是本周的工作報告,請查收。"
to_emails = ['alice@example.com', 'bob@example.com']
send_email(subject, body, to_emails)輸出結(jié)果:
郵件發(fā)送成功7. 數(shù)據(jù)可視化
數(shù)據(jù)分析過程中,圖表能夠幫助更好地理解數(shù)據(jù)。使用 matplotlib 庫可以輕松繪制各種圖表。
import matplotlib.pyplot as plt
import pandas as pd
def plot_data(data, title, x_label, y_label):
    """
    繪制數(shù)據(jù)圖表。
    
    :param data: 數(shù)據(jù) DataFrame
    :param title: 圖表標題
    :param x_label: X 軸標簽
    :param y_label: Y 軸標簽
    """
    plt.figure(figsize=(10, 6))
    plt.plot(data[x_label], data[y_label])
    plt.title(title)
    plt.xlabel(x_label)
    plt.ylabel(y_label)
    plt.grid(True)
    plt.show()
# 示例使用
data = pd.DataFrame({
    'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
    'Sales': [200, 250, 300, 350, 400, 450]
})
plot_data(data, 'Monthly Sales', 'Month', 'Sales')輸出結(jié)果:
- 繪制了一個簡單的折線圖,顯示每月的銷售數(shù)據(jù)。
 
8. Excel 數(shù)據(jù)批量處理
當需要對多個 Excel 文件進行相同的操作時,可以編寫一個腳本來批量處理。
import pandas as pd
import os
def process_excel_files(directory):
    """
    批量處理目錄下的所有 Excel 文件。
    
    :param directory: 目錄路徑
    """
    for filename in os.listdir(directory):
        if filename.endswith('.xlsx'):
            filepath = os.path.join(directory, filename)
            df = pd.read_excel(filepath)
            
            # 數(shù)據(jù)處理
            df['Total'] = df['Quantity'] * df['Price']
            df.dropna(inplace=True)
            
            # 保存處理后的數(shù)據(jù)
            output_path = os.path.join(directory, f"processed_{filename}")
            df.to_excel(output_path, index=False)
            print(f"處理并保存文件 {output_path}")
# 示例使用
directory = 'C:\\Users\\YourName\\Documents\\sales_data'
process_excel_files(directory)輸出結(jié)果:
處理并保存文件 C:\Users\YourName\Documents\sales_data\processed_sales1.xlsx
處理并保存文件 C:\Users\YourName\Documents\sales_data\processed_sales2.xlsx9. 自動化生成報告
在定期匯報工作中,自動生成報告可以節(jié)省大量時間。使用 pandas 和 openpyxl 庫可以實現(xiàn)這一目標。
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
def generate_report(data, output_path):
    """
    生成 Excel 報告。
    
    :param data: 數(shù)據(jù) DataFrame
    :param output_path: 輸出文件路徑
    """
    wb = Workbook()
    ws = wb.active
    ws.title = 'Report'
    for r in dataframe_to_rows(data, index=False, header=True):
        ws.append(r)
    wb.save(output_path)
    print(f"報告已生成:{output_path}")
# 示例使用
data = pd.DataFrame({
    'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
    'Sales': [200, 250, 300, 350, 400, 450]
})
generate_report(data, 'monthly_report.xlsx')輸出結(jié)果:
報告已生成:monthly_report.xlsx10. 文件壓縮與解壓
處理大量文件時,壓縮與解壓文件可以節(jié)省存儲空間。使用 zipfile 模塊可以輕松實現(xiàn)。
import zipfile
import os
def compress_files(directory, output_path):
    """
    壓縮指定目錄下的所有文件。
    
    :param directory: 目錄路徑
    :param output_path: 輸出文件路徑
    """
    with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(directory):
            for file in files:
                file_path = os.path.join(root, file)
                zipf.write(file_path, os.path.relpath(file_path, directory))
                print(f"壓縮文件 {file_path}")
# 示例使用
directory = 'C:\\Users\\YourName\\Documents\\project_files'
output_path = 'project_files.zip'
compress_files(directory, output_path)輸出結(jié)果:
壓縮文件 C:\Users\YourName\Documents\project_files\file1.txt
壓縮文件 C:\Users\YourName\Documents\project_files\file2.txt11. 實戰(zhàn)案例:自動化數(shù)據(jù)處理與報告生成
假設(shè)你是一名財務(wù)分析師,每天需要處理大量的銷售數(shù)據(jù),并生成一份報告。以下是一個完整的自動化腳本示例:
import pandas as pd
import matplotlib.pyplot as plt
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
import zipfile
import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def process_data(input_directory, output_directory):
    """
    處理數(shù)據(jù)并生成報告。
    
    :param input_directory: 輸入數(shù)據(jù)目錄
    :param output_directory: 輸出數(shù)據(jù)目錄
    """
    # 讀取數(shù)據(jù)
    data = pd.DataFrame()
    for filename in os.listdir(input_directory):
        if filename.endswith('.xlsx'):
            filepath = os.path.join(input_directory, filename)
            df = pd.read_excel(filepath)
            data = pd.concat([data, df])
    # 數(shù)據(jù)處理
    data['Total'] = data['Quantity'] * data['Price']
    data.dropna(inplace=True)
    # 保存處理后的數(shù)據(jù)
    output_path = os.path.join(output_directory, 'processed_data.xlsx')
    data.to_excel(output_path, index=False)
    print(f"處理并保存數(shù)據(jù):{output_path}")
    # 生成圖表
    plt.figure(figsize=(10, 6))
    plt.plot(data['Date'], data['Total'])
    plt.title('Monthly Sales')
    plt.xlabel('Date')
    plt.ylabel('Total Sales')
    plt.grid(True)
    plt.savefig(os.path.join(output_directory, 'sales_chart.png'))
    print("圖表已生成")
    # 生成報告
    wb = Workbook()
    ws = wb.active
    ws.title = 'Report'
    for r in dataframe_to_rows(data, index=False, header=True):
        ws.append(r)
    wb.save(os.path.join(output_directory, 'monthly_report.xlsx'))
    print("報告已生成")
    # 壓縮文件
    with zipfile.ZipFile(os.path.join(output_directory, 'monthly_data.zip'), 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(output_directory):
            for file in files:
                file_path = os.path.join(root, file)
                zipf.write(file_path, os.path.relpath(file_path, output_directory))
                print(f"壓縮文件 {file_path}")
    # 發(fā)送郵件
    sender_email = 'your_email@example.com'
    sender_password = 'your_password'
    to_emails = ['alice@example.com', 'bob@example.com']
    message = MIMEMultipart()
    message['From'] = sender_email
    message['To'] = ', '.join(to_emails)
    message['Subject'] = 'Monthly Report'
    with open(os.path.join(output_directory, 'monthly_report.xlsx'), 'rb') as file:
        attachment = file.read()
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(attachment)
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', f'attachment; filename=monthly_report.xlsx')
        message.attach(part)
    with open(os.path.join(output_directory, 'sales_chart.png'), 'rb') as file:
        attachment = file.read()
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(attachment)
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', f'attachment; filename=sales_chart.png')
        message.attach(part)
    try:
        server = smtplib.SMTP('smtp.example.com', 587)
        server.starttls()
        server.login(sender_email, sender_password)
        text = message.as_string()
        server.sendmail(sender_email, to_emails, text)
        server.quit()
        print("郵件發(fā)送成功")
    except Exception as e:
        print(f"郵件發(fā)送失?。簕e}")
# 示例使用
input_directory = 'C:\\Users\\YourName\\Documents\\sales_data'
output_directory = 'C:\\Users\\YourName\\Documents\\reports'
process_data(input_directory, output_directory)輸出結(jié)果:
處理并保存數(shù)據(jù):C:\Users\YourName\Documents\reports\processed_data.xlsx
圖表已生成
報告已生成
壓縮文件 monthly_report.xlsx
壓縮文件 sales_chart.png
壓縮文件 processed_data.xlsx
郵件發(fā)送成功總結(jié)
本文介紹了多種 Python 腳本,用于提高日常工作的效率。通過自動化批量創(chuàng)建文件夾、重命名文件、處理 Excel 數(shù)據(jù)、合并 PDF 文件、批量替換文本內(nèi)容、發(fā)送郵件、數(shù)據(jù)可視化、批量處理 Excel 文件、生成報告、壓縮文件等功能,可以顯著減少重復(fù)性工作。希望這些工具能幫助你更高效地完成工作任務(wù)。















 
 
 














 
 
 
 