用Python解放双手!15个超实用的自动化办公脚本(附代码)

开源AI·十一月创作之星挑战赛 10w+人浏览 798人参与

专栏导读
  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手
  • 🏳️‍🌈 个人博客主页:请点击——> 个人的博客主页 求收藏
  • 🏳️‍🌈 Github主页:请点击——> Github主页 求Star⭐
  • 🏳️‍🌈 知乎主页:请点击——> 知乎主页 求关注
  • 🏳️‍🌈 CSDN博客主页:请点击——> CSDN的博客主页 求关注
  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏 求订阅
  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏 求订阅
  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏 求订阅
  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • ❤️ 欢迎各位佬关注! ❤️

引言:告别重复,拥抱效率!

在日常工作中,你是否曾被那些枯燥、重复、耗时的数据处理、文件整理或信息录入任务所困扰?想象一下,如果有一个“智能助手”能够帮你自动完成这些繁琐的工作,那该有多棒!

好消息是,这个“智能助手”就是Python!Python以其简洁的语法和强大的库生态,成为了自动化办公领域的利器。无论你是数据分析师、行政人员、市场营销,还是任何需要处理大量文件的职场人,掌握一些Python自动化脚本都能极大地提升你的工作效率,让你有更多时间专注于创造性和战略性工作。

本篇博客将为你精心挑选并详细讲解15个超实用的Python自动化办公脚本,涵盖文件操作、文本处理、Excel/CSV数据处理、图片操作等多个方面。即使你是编程小白,也能跟着我们的教程一步步操作,亲手体验Python带来的效率革命!

准备好了吗?让我们一起用Python解放双手,告别重复劳动,迈向高效办公的新时代!

准备工作:搭建你的Python自动化环境

在开始编写脚本之前,我们需要先搭建好Python的运行环境。别担心,这比你想象的要简单!

1. 安装Python解释器

  • 下载Python: 访问 Python官方网站
  • 选择版本: 建议下载最新稳定版本(如Python 3.9+)。
  • 安装: 运行下载的安装包。特别注意:在安装过程中,务必勾选“Add Python to PATH”选项,这将使你能够在命令行中直接运行Python。
  • 验证安装: 打开命令行(Windows按Win+R,输入cmd回车;macOS/Linux打开终端),输入 python --versionpython3 --version,如果显示Python版本号,则说明安装成功。

2. 安装代码编辑器(推荐VS Code)

虽然任何文本编辑器都可以编写Python代码,但专业的代码编辑器能提供语法高亮、代码补全、调试等功能,极大地提升开发体验。

  • 下载VS Code: 访问 Visual Studio Code官方网站
  • 安装: 按照指引安装即可。
  • 安装Python扩展: 打开VS Code,在侧边栏点击“扩展”图标(或按Ctrl+Shift+X),搜索“Python”并安装由Microsoft提供的扩展。

3. 安装必要的Python库

Python的强大之处在于其丰富的第三方库。我们将使用pip(Python的包管理器)来安装这些库。

  • 打开命令行/终端

  • 逐一安装以下库(有些脚本可能只用到其中一部分,但为了方便,我们一次性安装):

    pip install pandas openpyxl PyPDF2 Pillow pyperclip requests beautifulsoup4 schedule
    
    • pandas: 处理Excel和CSV文件的利器。
    • openpyxl: pandas处理xlsx格式文件需要依赖它。
    • PyPDF2: 用于PDF文件的读写操作。
    • Pillow: 强大的图像处理库。
    • pyperclip: 方便地操作剪贴板。
    • requests: 用于发送HTTP请求,抓取网页内容。
    • beautifulsoup4: 用于解析HTML/XML文档,提取数据。
    • schedule: 用于定时任务。

实战脚本详解:15个超实用的自动化办公脚本

下面,我们将逐一介绍这15个脚本。每个脚本都包含详细的代码、用途说明和使用方法,请跟着步骤亲手实践!

重要提示:

  • 文件路径: 在Windows系统中,路径通常使用反斜杠 \ (如 C:\Users\YourName\Desktop)。在Python字符串中,反斜杠是转义字符,所以你需要使用双反斜杠 \\ (如 C:\\Users\\YourName\\Desktop),或者使用原始字符串 r'C:\Users\YourName\Desktop'。更推荐的做法是使用正斜杠 /,Python在所有操作系统上都能很好地处理它 (如 C:/Users/YourName/Desktop)。
  • 代码保存: 将每个脚本的代码保存为一个 .py 文件(例如 rename_files.py)。
  • 运行脚本: 在命令行/终端中,导航到你保存脚本的文件夹,然后运行 python your_script_name.py

1. 批量重命名文件

这个脚本可以帮助你快速、批量地重命名一个文件夹内的所有文件,例如添加前缀、后缀或替换部分文件名。

  • 用途: 整理照片、文档、下载文件时非常有用。
  • 所需库: os (Python内置库)
import os

def batch_rename_files(folder_path, old_str, new_str):
    """
    批量重命名指定文件夹下的文件。
    :param folder_path: 文件夹路径
    :param old_str: 文件名中需要被替换的旧字符串
    :param new_str: 替换旧字符串的新字符串
    """
    try:
        for filename in os.listdir(folder_path):
            if old_str in filename:
                new_filename = filename.replace(old_str, new_str)
                old_file_path = os.path.join(folder_path, filename)
                new_file_path = os.path.join(folder_path, new_filename)
                os.rename(old_file_path, new_file_path)
                print(f"文件 '{filename}' 已重命名为 '{new_filename}'")
        print("所有文件重命名完成!")
    except Exception as e:
        print(f"发生错误: {e}")

if __name__ == "__main__":
    # 请修改为你实际的文件夹路径、旧字符串和新字符串
    folder = "D:/MyDocuments/Photos" # 示例路径
    old_text = "IMG_"
    new_text = "Vacation_"
    batch_rename_files(folder, old_text, new_text)

    # 示例2: 添加前缀
    # folder = "D:/MyDocuments/Reports"
    # old_text = "" # 空字符串表示添加前缀
    # new_text = "Final_"
    # batch_rename_files(folder, old_text, new_text)
  • 使用方法:
    1. 将代码保存为 rename_files.py
    2. 修改 folder 变量为你需要操作的文件夹路径。
    3. 修改 old_textnew_text 为你想要替换的字符串。
    4. 运行 python rename_files.py

2. 按文件类型整理文件

这个脚本能自动识别文件类型(通过扩展名),并将它们移动到对应的子文件夹中,让你的文件夹井井有条。

  • 用途: 桌面文件清理、下载文件夹整理。
  • 所需库: os, shutil (Python内置库)
import os
import shutil

def organize_files_by_type(folder_path):
    """
    根据文件类型(扩展名)将文件移动到对应的子文件夹中。
    :param folder_path: 需要整理的文件夹路径
    """
    try:
        for filename in os.listdir(folder_path):
            file_path = os.path.join(folder_path, filename)
            if os.path.isfile(file_path): # 确保是文件而不是文件夹
                file_extension = os.path.splitext(filename)[1].lower() # 获取文件扩展名
                if not file_extension: # 没有扩展名的文件跳过
                    continue

                # 创建目标文件夹
                target_folder = os.path.join(folder_path, file_extension[1:] + "_Files") # 例如 ".txt" -> "txt_Files"
                os.makedirs(target_folder, exist_ok=True)

                # 移动文件
                shutil.move(file_path, target_folder)
                print(f"文件 '{filename}' 已移动到 '{target_folder}'")
        print("文件整理完成!")
    except Exception as e:
        print(f"发生错误: {e}")

if __name__ == "__main__":
    # 请修改为你实际的文件夹路径
    folder = "D:/MyDocuments/Downloads" # 示例路径
    organize_files_by_type(folder)
  • 使用方法:
    1. 将代码保存为 organize_files.py
    2. 修改 folder 变量为你需要整理的文件夹路径。
    3. 运行 python organize_files.py

3. 查找并删除空文件夹

这个脚本可以递归地遍历指定目录,找出并删除所有空文件夹,帮助你清理磁盘空间。

  • 用途: 清理项目残余、旧的下载目录等。
  • 所需库: os (Python内置库)
import os

def delete_empty_folders(folder_path):
    """
    递归查找并删除指定路径下的所有空文件夹。
    :param folder_path: 需要清理的根文件夹路径
    :return: 被删除的空文件夹数量
    """
    deleted_count = 0
    for dirpath, dirnames, filenames in os.walk(folder_path, topdown=False):
        # topdown=False 确保先处理子目录,再处理父目录
        if not dirnames and not filenames:
            try:
                os.rmdir(dirpath)
                print(f"已删除空文件夹: {dirpath}")
                deleted_count += 1
            except OSError as e:
                print(f"无法删除文件夹 {dirpath}: {e}")
    return deleted_count

if __name__ == "__main__":
    # 请修改为你实际的根文件夹路径
    root_folder = "D:/MyDocuments/Temp" # 示例路径
    print(f"开始清理 '{root_folder}' 下的空文件夹...")
    count = delete_empty_folders(root_folder)
    print(f"清理完成,共删除 {count} 个空文件夹。")
  • 使用方法:
    1. 将代码保存为 delete_empty_folders.py
    2. 修改 root_folder 变量为你需要清理的根文件夹路径。
    3. 运行 python delete_empty_folders.py

4. 合并多个TXT文件

将多个文本文件内容合并到一个新的文本文件中,非常适合合并日志、报告等。

  • 用途: 汇总报告、日志分析。
  • 所需库: Python内置的文件I/O操作
import os

def merge_txt_files(folder_path, output_filename="merged_output.txt"):
    """
    合并指定文件夹下所有TXT文件的内容到一个新的TXT文件。
    :param folder_path: 包含TXT文件的文件夹路径
    :param output_filename: 合并后的输出文件名
    """
    output_path = os.path.join(folder_path, output_filename)
    try:
        with open(output_path, 'w', encoding='utf-8') as outfile:
            for filename in os.listdir(folder_path):
                if filename.endswith(".txt") and filename != output_filename:
                    filepath = os.path.join(folder_path, filename)
                    try:
                        with open(filepath, 'r', encoding='utf-8') as infile:
                            outfile.write(f"--- 文件开始: {filename} ---\n")
                            outfile.write(infile.read())
                            outfile.write(f"\n--- 文件结束: {filename} ---\n\n")
                        print(f"已合并文件: {filename}")
                    except UnicodeDecodeError:
                        print(f"警告: 文件 '{filename}' 编码错误,尝试使用GBK...")
                        try:
                            with open(filepath, 'r', encoding='gbk') as infile:
                                outfile.write(f"--- 文件开始: {filename} (GBK编码) ---\n")
                                outfile.write(infile.read())
                                outfile.write(f"\n--- 文件结束: {filename} (GBK编码) ---\n\n")
                            print(f"已合并文件: {filename} (GBK)")
                        except Exception as e:
                            print(f"错误: 无法读取文件 '{filename}' ({e})")
                    except Exception as e:
                        print(f"错误: 读取文件 '{filename}' 失败 ({e})")
        print(f"\n所有TXT文件已成功合并到 '{output_path}'")
    except Exception as e:
        print(f"发生错误: {e}")

if __name__ == "__main__":
    # 请修改为你实际的文件夹路径
    folder = "D:/MyDocuments/Reports" # 示例路径
    merge_txt_files(folder, "Annual_Report_Combined.txt")
  • 使用方法:
    1. 将代码保存为 merge_txt.py
    2. 修改 folder 变量为你需要合并TXT文件的文件夹路径。
    3. (可选)修改 output_filename 为你想要的输出文件名。
    4. 运行 python merge_txt.py

5. 批量查找替换文本内容

在多个文本文件或代码文件中批量查找并替换指定字符串,省去手动修改的麻烦。

  • 用途: 代码重构、文档更新、统一术语。
  • 所需库: Python内置的文件I/O操作
import os

def batch_find_replace(folder_path, old_text, new_text, file_extension=".txt"):
    """
    在指定文件夹下所有指定类型的文件中查找并替换文本。
    :param folder_path: 文件夹路径
    :param old_text: 需要查找的旧文本
    :param new_text: 替换旧文本的新文本
    :param file_extension: 需要处理的文件扩展名 (例如 ".txt", ".md", ".py")
    """
    replaced_count = 0
    for filename in os.listdir(folder_path):
        if filename.endswith(file_extension):
            filepath = os.path.join(folder_path, filename)
            try:
                with open(filepath, 'r', encoding='utf-8') as f:
                    content = f.read()

                if old_text in content:
                    new_content = content.replace(old_text, new_text)
                    with open(filepath, 'w', encoding='utf-8') as f:
                        f.write(new_content)
                    print(f"文件 '{filename}' 中的 '{old_text}' 已替换为 '{new_text}'")
                    replaced_count += 1
            except UnicodeDecodeError:
                print(f"警告: 文件 '{filename}' 编码错误,跳过。")
            except Exception as e:
                print(f"处理文件 '{filename}' 时发生错误: {e}")
    print(f"\n批量查找替换完成,共修改了 {replaced_count} 个文件。")

if __name__ == "__main__":
    # 请修改为你实际的文件夹路径、旧文本、新文本和文件扩展名
    folder = "D:/MyDocuments/Projects/MyCode" # 示例路径
    old_string = "deprecated_function"
    new_string = "new_function_v2"
    file_ext = ".py" # 例如,可以修改为 ".txt", ".md", ".html" 等

    batch_find_replace(folder, old_string, new_string, file_ext)
  • 使用方法:
    1. 将代码保存为 batch_replace.py
    2. 修改 folderold_stringnew_stringfile_ext
    3. 运行 python batch_replace.py

6. 将CSV文件转换为Excel

将一个或多个CSV文件转换为Excel的XLSX格式,方便数据管理和共享。

  • 用途: 数据格式转换、兼容不同软件。
  • 所需库: pandas
import pandas as pd
import os

def csv_to_excel(csv_folder_path, output_excel_filename="merged_output.xlsx"):
    """
    将指定文件夹下的所有CSV文件合并并转换为一个Excel文件。
    :param csv_folder_path: 包含CSV文件的文件夹路径
    :param output_excel_filename: 输出的Excel文件名
    """
    all_data = []
    for filename in os.listdir(csv_folder_path):
        if filename.endswith(".csv"):
            filepath = os.path.join(csv_folder_path, filename)
            try:
                # 尝试多种编码读取CSV
                df = pd.read_csv(filepath, encoding='utf-8')
                all_data.append(df)
                print(f"已读取CSV文件: {filename}")
            except UnicodeDecodeError:
                print(f"警告: CSV文件 '{filename}' 编码错误,尝试使用GBK...")
                try:
                    df = pd.read_csv(filepath, encoding='gbk')
                    all_data.append(df)
                    print(f"已读取CSV文件: {filename} (GBK)")
                except Exception as e:
                    print(f"错误: 无法读取CSV文件 '{filename}' ({e})")
            except Exception as e:
                print(f"处理CSV文件 '{filename}' 时发生错误: {e}")

    if not all_data:
        print("未找到任何CSV文件或所有文件读取失败。")
        return

    # 合并所有DataFrame
    merged_df = pd.concat(all_data, ignore_index=True)

    # 写入Excel
    output_path = os.path.join(csv_folder_path, output_excel_filename)
    try:
        merged_df.to_excel(output_path, index=False)
        print(f"\n所有CSV文件已成功合并并转换为Excel文件: '{output_path}'")
    except Exception as e:
        print(f"写入Excel文件失败: {e}")

if __name__ == "__main__":
    # 请修改为你实际的文件夹路径和输出文件名
    csv_folder = "D:/MyDocuments/Data/Sales" # 示例路径
    csv_to_excel(csv_folder, "Sales_Data_Combined.xlsx")
  • 使用方法:
    1. 将代码保存为 csv_to_excel.py
    2. 修改 csv_folder 变量为你包含CSV文件的文件夹路径。
    3. (可选)修改 output_excel_filename
    4. 运行 python csv_to_excel.py

7. 合并多个Excel文件

将多个Excel文件(或同一个Excel文件的多个工作表)合并到一个新的Excel文件中的不同工作表,或合并到一个工作表中。

  • 用途: 汇总各部门报告、合并不同日期的数据。
  • 所需库: pandas
import pandas as pd
import os

def merge_excel_files(excel_folder_path, output_excel_filename="merged_all_data.xlsx"):
    """
    将指定文件夹下的所有Excel文件(每个文件作为一个工作表)合并到一个新的Excel文件。
    :param excel_folder_path: 包含Excel文件的文件夹路径
    :param output_excel_filename: 输出的Excel文件名
    """
    output_path = os.path.join(excel_folder_path, output_excel_filename)
    writer = pd.ExcelWriter(output_path, engine='openpyxl')

    for filename in os.listdir(excel_folder_path):
        if filename.endswith((".xlsx", ".xls")) and filename != output_excel_filename:
            filepath = os.path.join(excel_folder_path, filename)
            try:
                df = pd.read_excel(filepath)
                sheet_name = os.path.splitext(filename)[0][:30] # 工作表名称不能太长
                df.to_excel(writer, sheet_name=sheet_name, index=False)
                print(f"已将文件 '{filename}' 写入到工作表 '{sheet_name}'")
            except Exception as e:
                print(f"处理Excel文件 '{filename}' 时发生错误: {e}")

    try:
        writer.save()
        print(f"\n所有Excel文件已成功合并到 '{output_path}'")
    except Exception as e:
        print(f"写入Excel文件失败: {e}")

if __name__ == "__main__":
    # 请修改为你实际的文件夹路径和输出文件名
    excel_folder = "D:/MyDocuments/Data/MonthlyReports" # 示例路径
    merge_excel_files(excel_folder, "Combined_Monthly_Reports.xlsx")
  • 使用方法:
    1. 将代码保存为 merge_excel.py
    2. 修改 excel_folder 变量为你包含Excel文件的文件夹路径。
    3. (可选)修改 output_excel_filename
    4. 运行 python merge_excel.py

8. 从Excel中提取特定数据

根据条件从Excel文件中筛选、提取所需的数据,并保存为新的Excel文件或CSV文件。

  • 用途: 数据分析预处理、生成报告子集。
  • 所需库: pandas
import pandas as pd
import os

def extract_data_from_excel(input_excel_path, output_filename="extracted_data.xlsx"):
    """
    从Excel文件中读取数据,并根据条件提取特定数据。
    :param input_excel_path: 输入的Excel文件路径
    :param output_filename: 提取数据后保存的输出文件名
    """
    try:
        df = pd.read_excel(input_excel_path)
        print("原始数据前5行:")
        print(df.head())

        # 示例:提取 '销售额' 大于 5000 且 '地区' 为 '华东' 的数据
        # 请根据你的实际数据列名和条件进行修改
        extracted_df = df[(df['销售额'] > 5000) & (df['地区'] == '华东')]

        output_path = os.path.join(os.path.dirname(input_excel_path), output_filename)
        extracted_df.to_excel(output_path, index=False)
        print(f"\n成功提取数据并保存到 '{output_path}'")
        print("提取数据前5行:")
        print(extracted_df.head())

    except FileNotFoundError:
        print(f"错误: 文件未找到 '{input_excel_path}'")
    except KeyError as e:
        print(f"错误: Excel文件中缺少列 '{e}'。请检查列名是否正确。")
    except Exception as e:
        print(f"处理Excel文件时发生错误: {e}")

if __name__ == "__main__":
    # 请修改为你实际的输入Excel文件路径
    input_file = "D:/MyDocuments/Data/Sales_Data.xlsx" # 示例路径

    # 请确保你的Excel文件中有 '销售额' 和 '地区' 列,并包含相应的数据
    # 如果没有,请根据你的数据调整筛选条件或创建示例Excel文件进行测试。
    # 示例Excel文件内容 (Sales_Data.xlsx):
    # 销售员,地区,销售额,产品
    # 张三,华东,6000,A
    # 李四,华南,4500,B
    # 王五,华东,7200,C
    # 赵六,华北,3000,A
    # 钱七,华东,5500,B

    extract_data_from_excel(input_file, "High_Sales_East_Region.xlsx")
  • 使用方法:
    1. 将代码保存为 extract_excel_data.py
    2. 修改 input_file 为你的Excel文件路径。
    3. 根据你的Excel文件内容,修改 extracted_df 这一行中的列名和筛选条件。
    4. 运行 python extract_excel_data.py

9. 批量图片缩放

批量调整一个文件夹内所有图片的尺寸,可用于优化网站图片、制作缩略图等。

  • 用途: 网站图片优化、批量生成缩略图。
  • 所需库: Pillow (PIL)
from PIL import Image
import os

def batch_resize_images(folder_path, output_folder_name="resized_images", size=(800, 600)):
    """
    批量缩放指定文件夹下的所有图片。
    :param folder_path: 包含图片的文件夹路径
    :param output_folder_name: 缩放后图片保存的子文件夹名称
    :param size: 目标尺寸 (宽度, 高度)
    """
    output_folder = os.path.join(folder_path, output_folder_name)
    os.makedirs(output_folder, exist_ok=True)

    for filename in os.listdir(folder_path):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
            filepath = os.path.join(folder_path, filename)
            try:
                with Image.open(filepath) as img:
                    img_resized = img.resize(size)
                    output_filepath = os.path.join(output_folder, filename)
                    img_resized.save(output_filepath)
                    print(f"图片 '{filename}' 已缩放并保存到 '{output_folder_name}'")
            except Exception as e:
                print(f"处理图片 '{filename}' 时发生错误: {e}")
    print("\n所有图片缩放完成!")

if __name__ == "__main__":
    # 请修改为你实际的图片文件夹路径和目标尺寸
    image_folder = "D:/MyDocuments/ImageGallery" # 示例路径
    target_size = (1280, 720) # 目标宽度和高度

    batch_resize_images(image_folder, size=target_size)
  • 使用方法:
    1. 将代码保存为 resize_images.py
    2. 修改 image_folder 为你的图片文件夹路径。
    3. 修改 target_size 为你想要的图片尺寸。
    4. 运行 python resize_images.py

10. 批量图片格式转换

将一个文件夹内的所有图片批量转换为另一种格式(例如PNG转JPG,或JPG转PNG)。

  • 用途: 统一图片格式、兼容不同平台。
  • 所需库: Pillow (PIL)
from PIL import Image
import os

def batch_convert_images(folder_path, output_folder_name="converted_images", target_format="PNG"):
    """
    批量转换指定文件夹下的所有图片格式。
    :param folder_path: 包含图片的文件夹路径
    :param output_folder_name: 转换后图片保存的子文件夹名称
    :param target_format: 目标格式 (例如 "PNG", "JPEG", "BMP")
    """
    output_folder = os.path.join(folder_path, output_folder_name)
    os.makedirs(output_folder, exist_ok=True)

    for filename in os.listdir(folder_path):
        # 排除已是目标格式的文件,防止重复处理
        if not filename.lower().endswith(f'.{target_format.lower()}'):
            filepath = os.path.join(folder_path, filename)
            try:
                with Image.open(filepath) as img:
                    # 构建新的文件名和路径
                    base_name = os.path.splitext(filename)[0]
                    output_filepath = os.path.join(output_folder, f"{base_name}.{target_format.lower()}")
                    img.save(output_filepath, format=target_format)
                    print(f"图片 '{filename}' 已转换为 {target_format} 格式并保存到 '{output_folder_name}'")
            except Exception as e:
                print(f"处理图片 '{filename}' 时发生错误: {e}")
    print("\n所有图片格式转换完成!")

if __name__ == "__main__":
    # 请修改为你实际的图片文件夹路径和目标格式
    image_folder = "D:/MyDocuments/ImageGallery" # 示例路径
    target_format = "JPEG" # 例如 "PNG", "JPEG", "BMP"

    batch_convert_images(image_folder, target_format=target_format)
  • 使用方法:
    1. 将代码保存为 convert_images.py
    2. 修改 image_folder 为你的图片文件夹路径。
    3. 修改 target_format 为你想要转换的目标格式(如 “JPEG”, “PNG”)。
    4. 运行 python convert_images.py

11. 自动打开指定网页

使用默认浏览器打开一个或多个指定的网页链接。

  • 用途: 每日工作网站快速启动、批量打开参考资料。
  • 所需库: webbrowser (Python内置库)
import webbrowser
import time

def open_websites(urls):
    """
    在默认浏览器中打开一个或多个指定的网页链接。
    :param urls: 一个包含网页链接的列表
    """
    for url in urls:
        try:
            webbrowser.open_new_tab(url)
            print(f"已打开网页: {url}")
            time.sleep(1) # 暂停1秒,避免同时打开过多标签页导致浏览器卡顿
        except Exception as e:
            print(f"无法打开网页 '{url}': {e}")
    print("\n所有指定网页已尝试打开。")

if __name__ == "__main__":
    # 请修改为你需要打开的网页链接列表
    my_work_websites = [
        "https://www.google.com",
        "https://chat.openai.com",
        "https://github.com",
        "https://www.example.com" # 替换为你的实际网址
    ]
    open_websites(my_work_websites)
  • 使用方法:
    1. 将代码保存为 open_websites.py
    2. 修改 my_work_websites 列表,填入你想要打开的网址。
    3. 运行 python open_websites.py

12. 定时提醒/消息

设置一个定时提醒,在指定时间后弹出一个简单的消息。这个例子使用命令行输出,你可以进一步扩展为桌面通知。

  • 用途: 午休提醒、会议提醒、任务截止提醒。
  • 所需库: time (Python内置库)
import time

def set_timer_reminder(minutes, message):
    """
    设置一个定时提醒。
    :param minutes: 提醒间隔时间(分钟)
    :param message: 提醒消息内容
    """
    seconds = minutes * 60
    print(f"提醒已设置!将在 {minutes} 分钟后(即 {seconds} 秒后)显示消息:'{message}'")
    time.sleep(seconds)
    print("\n" + "="*30)
    print(f"提醒时间到!消息:{message}")
    print("="*30 + "\n")

if __name__ == "__main__":
    # 请修改为你需要设置的提醒时间和消息
    reminder_minutes = 30 # 30分钟后提醒
    reminder_message = "该休息一下眼睛了!"
    set_timer_reminder(reminder_minutes, reminder_message)

    # 另一个例子
    # set_timer_reminder(5, "记得保存当前工作!")
  • 使用方法:
    1. 将代码保存为 timer_reminder.py
    2. 修改 reminder_minutes 为你想要设置的分钟数。
    3. 修改 reminder_message 为你想要显示的提醒消息。
    4. 运行 python timer_reminder.py

13. 剪贴板内容操作

快速获取剪贴板内容或将文本复制到剪贴板,实现自动化复制粘贴。

  • 用途: 批量复制粘贴、快速填充表单。
  • 所需库: pyperclip
import pyperclip

def clipboard_operations():
    """
    演示剪贴板的复制和粘贴操作。
    """
    print("--- 剪贴板操作演示 ---")

    # 1. 获取剪贴板内容
    try:
        clipboard_content = pyperclip.paste()
        print(f"当前剪贴板内容: '{clipboard_content}'")
    except pyperclip.PyperclipException as e:
        print(f"无法获取剪贴板内容: {e}. 请确保安装了必要的剪贴板后端(如xclip/xsel on Linux)。")
        return # 如果无法获取,则退出,避免后续错误

    # 2. 将文本复制到剪贴板
    text_to_copy = "Hello, Python Automation!"
    pyperclip.copy(text_to_copy)
    print(f"已将文本 '{text_to_copy}' 复制到剪贴板。")

    # 3. 再次获取剪贴板内容,验证是否成功复制
    new_clipboard_content = pyperclip.paste()
    print(f"验证:新的剪贴板内容为: '{new_clipboard_content}'")

    if new_clipboard_content == text_to_copy:
        print("剪贴板操作成功!")
    else:
        print("剪贴板操作可能出现问题。")

if __name__ == "__main__":
    clipboard_operations()
  • 使用方法:
    1. 将代码保存为 clipboard_tool.py
    2. 运行 python clipboard_tool.py
    3. 你可以手动复制一些文本到剪贴板,然后运行脚本查看。

14. PDF文件合并

将多个PDF文件合并为一个PDF文件。

  • 用途: 合并报告、合同、扫描件。
  • 所需库: PyPDF2
from PyPDF2 import PdfMerger
import os

def merge_pdf_files(folder_path, output_filename="merged_document.pdf"):
    """
    合并指定文件夹下的所有PDF文件。
    :param folder_path: 包含PDF文件的文件夹路径
    :param output_filename: 合并后的输出文件名
    """
    merger = PdfMerger()
    pdf_files = [f for f in os.listdir(folder_path) if f.lower().endswith('.pdf')]
    pdf_files.sort() # 按文件名排序,确保合并顺序

    if not pdf_files:
        print("在指定文件夹中未找到任何PDF文件。")
        return

    for filename in pdf_files:
        filepath = os.path.join(folder_path, filename)
        try:
            merger.append(filepath)
            print(f"已添加文件: {filename}")
        except Exception as e:
            print(f"无法添加文件 '{filename}': {e}")

    output_path = os.path.join(folder_path, output_filename)
    try:
        with open(output_path, "wb") as output_file:
            merger.write(output_file)
        print(f"\n所有PDF文件已成功合并到 '{output_path}'")
    except Exception as e:
        print(f"写入合并PDF文件失败: {e}")
    finally:
        merger.close()

if __name__ == "__main__":
    # 请修改为你实际的PDF文件夹路径
    pdf_folder = "D:/MyDocuments/Reports/Quarterly" # 示例路径
    merge_pdf_files(pdf_folder, "Q4_Combined_Report.pdf")
  • 使用方法:
    1. 将代码保存为 merge_pdf.py
    2. 修改 pdf_folder 为你的PDF文件文件夹路径。
    3. (可选)修改 output_filename
    4. 运行 python merge_pdf.py

15. PDF文本内容提取

从PDF文件中提取所有文本内容,并保存到TXT文件中。

  • 用途: PDF内容检索、数据抽取、文本分析。
  • 所需库: PyPDF2
from PyPDF2 import PdfReader
import os

def extract_text_from_pdf(pdf_path, output_txt_filename=None):
    """
    从PDF文件中提取所有文本内容并保存到TXT文件。
    :param pdf_path: 输入的PDF文件路径
    :param output_txt_filename: 输出的TXT文件名 (如果为None,则使用PDF文件名)
    """
    if not output_txt_filename:
        base_name = os.path.splitext(os.path.basename(pdf_path))[0]
        output_txt_filename = f"{base_name}_extracted.txt"

    output_path = os.path.join(os.path.dirname(pdf_path), output_txt_filename)

    try:
        reader = PdfReader(pdf_path)
        text_content = ""
        for page in reader.pages:
            text_content += page.extract_text() + "\n" # 提取每页文本并换行

        with open(output_path, 'w', encoding='utf-8') as f:
            f.write(text_content)
        print(f"成功从 '{pdf_path}' 提取文本并保存到 '{output_path}'")

    except FileNotFoundError:
        print(f"错误: PDF文件未找到 '{pdf_path}'")
    except Exception as e:
        print(f"处理PDF文件时发生错误: {e}")

if __name__ == "__main__":
    # 请修改为你实际的PDF文件路径
    input_pdf = "D:/MyDocuments/Documents/Contract_Draft.pdf" # 示例路径
    extract_text_from_pdf(input_pdf)

    # 也可以指定输出文件名
    # extract_text_from_pdf(input_pdf, "Contract_Text.txt")
  • 使用方法:
    1. 将代码保存为 extract_pdf_text.py
    2. 修改 input_pdf 为你的PDF文件路径。
    3. (可选)修改 output_txt_filename
    4. 运行 python extract_pdf_text.py

常见问题与提示

在实践这些脚本时,你可能会遇到一些问题。以下是一些常见问题及其解决方案:

  1. ModuleNotFoundError (模块未找到错误):

    • 原因: 对应的Python库没有安装。
    • 解决方案: 确保你按照“准备工作”章节的指示,使用 pip install 库名 安装了所有必要的库。例如,如果出现 ModuleNotFoundError: No module named 'pandas',则运行 pip install pandas
  2. 文件路径问题 (FileNotFoundError / PermissionError):

    • 原因: 文件路径不正确,或者你没有访问该路径的权限。
    • 解决方案:
      • 仔细检查路径字符串是否拼写正确,包括大小写。
      • Windows路径建议使用正斜杠 / (例如 C:/Users/Desktop/) 或双反斜杠 \\ (例如 C:\\Users\\Desktop\\),或者使用原始字符串 r'C:\Users\Desktop\'
      • 确保Python脚本有权限读写目标文件夹。如果是在系统保护目录(如C:\Windows或程序文件目录)操作,可能会遇到权限问题。尝试将文件放在用户目录(如桌面、文档)进行测试。
  3. 编码问题 (UnicodeDecodeError):

    • 原因: 文本文件(如TXT、CSV)的编码格式与脚本中指定的编码不一致(默认为UTF-8)。
    • 解决方案:open() 函数中尝试不同的编码,如 encoding='gbk'encoding='latin-1'。在我们的脚本中已经尝试了UTF-8和GBK。
  4. 文件被占用:

    • 原因: 你正在尝试操作的文件被其他程序(如Excel、Word、图片查看器)打开并占用。
    • 解决方案: 关闭所有可能占用目标文件的程序,然后再运行脚本。
  5. 不熟悉命令行操作:

    • 解决方案: 多加练习。记住 cd 命令用于切换目录,dir (Windows) 或 ls (macOS/Linux) 用于列出当前目录内容,python your_script.py 用于运行脚本。
  6. 代码错误 (SyntaxError, TypeError 等):

    • 解决方案:
      • 仔细阅读错误信息,它通常会告诉你错误发生在哪一行以及错误类型。
      • 使用VS Code等编辑器,它们通常会高亮显示语法错误。
      • 对于初学者,逐步运行(或在关键位置添加 print() 语句)是很好的调试方法,可以查看变量的值和代码的执行流程。

总结与展望

恭喜你!通过学习和实践这15个自动化脚本,你已经迈出了Python自动化办公的第一步。你不仅学会了如何用代码解决实际工作中的痛点,更重要的是,你掌握了一种全新的思考问题和提升效率的方式。

Python自动化办公的潜力远不止于此。你可以继续探索:

  • 更复杂的Excel操作: 数据透视、图表生成、与其他数据源联动。
  • Web自动化: 使用 Selenium 模拟浏览器操作,实现自动登录、表单填写、数据抓取。
  • 邮件自动化: 自动发送邮件、处理附件。
  • GUI自动化: 使用 PyAutoGUI 模拟鼠标键盘操作,实现与任何桌面应用的交互。
  • 定时任务: 使用操作系统自带的定时任务(如Windows的任务计划程序,Linux的Cron)结合Python脚本,实现无人值守的自动化。

行动起来!

  1. 实践是最好的老师: 不要只看不做,选择一两个你最感兴趣或最能解决你实际问题的脚本,亲自修改参数并运行它。
  2. 从模仿到创造: 在理解了这些脚本的原理后,尝试根据自己的需求进行修改和组合,创造出属于你自己的自动化工具。
  3. 持续学习: Python的世界广阔而精彩,保持好奇心,不断学习新的库和技术。

用Python武装你的办公技能,让你的双手从重复劳动中解放出来,投入到更有价值的工作中去吧!祝你在Python自动化之路上越走越远,成为真正的效率达人!

结尾
  • 希望对初学者有帮助;致力于办公自动化的小小程序员一枚
  • 希望能得到大家的【❤️一个免费关注❤️】感谢!
  • 求个 🤞 关注 🤞 +❤️ 喜欢 ❤️ +👍 收藏 👍
  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏
  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏
  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

### Python 自动化办公案例展示 #### 案例 1: Excel 数据处理脚本 通过 `pandas` 库读取、修改并保存 Excel 文件,实现批量数据处理。 ```python import pandas as pd df = pd.read_excel('data.xlsx') # 对数据进行操作... df.to_excel('output.xlsx', index=False) ``` #### 案例 2: Word 文档自动生成报告 利用 `docx` 库创建带有图表和表格的专业文档。 ```python from docx import Document document = Document() document.add_heading('月度销售总结', level=1) table = document.add_table(rows=1, cols=3) # 添加内容到表格中... document.save('report.docx') ``` #### 案例 3: PDF 合并与拆分工具 借助 `PyPDF2` 实现多个 PDF 的合并或单个文件的分割功能[^1]。 #### 案例 4: 邮件群发助手 基于 SMTP 协议发送个性化邮件给不同收件人列表中的成员。 ```python import smtplib server = smtplib.SMTP('smtp.example.com') for recipient in recipients_list: server.sendmail(sender_email, recipient, message_body) server.quit() ``` #### 案例 5: 日历事件同步器 连接 Google Calendar API 或 Outlook Calendar 接口完成日程安排自动化管理[^2]。 #### 案例 6: 图像批处理程序 使用 OpenCV 进行图片格式转换、尺寸调整以及水印添加等操作。 ```python import cv2 img = cv2.imread('input.jpg') resized_img = cv2.resize(img, (new_width, new_height)) cv2.imwrite('output.png', resized_img) ``` #### 案例 7: PowerPoint 幻灯片制作机器人 调用 python-pptx 创建演示文稿,并支持幻灯片模板应用及动画效果设置。 ```python from pptx import Presentation prs = Presentation(template_path) slide_layout = prs.slide_layouts[0] slide = prs.slides.add_slide(slide_layout) # 设置幻灯片内容... prs.save('presentation.pptx') ``` #### 案例 8: FTP 文件上传下载客户端 构建简单的FTP服务器交互应用程序用于远程传输文件资源。 ```python from ftplib import FTP ftp = FTP(host='example.com') with open(local_file, 'rb') as f: ftp.storbinary(f'STOR {remote_filename}', fp=f) ftp.quit() ``` #### 案例 9: OCR 文字识别服务集成 结合 Tesseract 工具包提取扫描图像内的文字信息以便后续编辑加工。 ```python import pytesseract text = pytesseract.image_to_string(image, lang='chi_sim') print(text.strip()) ``` #### 案例 10: 财务报表生成器 根据预定义模版快速汇总各类财务指标形成结构化的电子表格形式输出。 ```python template_df = pd.DataFrame(columns=['科目名称','本期金额']) final_report = template_df.append(new_data_rows) final_report.to_csv('financial_statement.csv', encoding='utf-8-sig') ``` #### 案例 11: 定时提醒闹钟设定 开发跨平台桌面通知插件,在指定时间触发声音提示或者弹窗显示重要事项提醒[^3]。 #### 案例 12: 网页抓取新闻资讯聚合 编写网络爬虫采集各大网站最新动态更新至本地数据库供内部查阅参考。 ```python import requests response = requests.get(url=news_page_url) html_content = response.text # 解析 HTML 获取所需文章链接... ``` #### 案例 13: 社交媒体营销活动监控面板 对接微博、微信公众号接口统计粉丝增长趋势、互动量变化情况绘制可视化图表辅助决策制定。 #### 案例 14: ERP 系统订单状态跟踪查询 建立 RESTful Web Service 查询企业内部管理系统内特定客户订单流转进度详情记录。 #### 案例 15: CRM 客户关系维护聊天机器人 训练自然语言理解模型解析用户提问意图并通过即时通讯软件提供针对性解答建议。 #### 案例 16: HR 员工考勤打卡签退登记表单设计 采用 Flask/Django 开发在线填报页面收集员工每日上下班刷卡时间戳录入HRIS系统存档备案。 #### 案例 17: IT 设备资产管理清单编制 运用 SQLite/MySQL 存储公司固定资产编号、购置日期、折旧年限等相关参数便于定期盘点核查资产状况。 #### 案例 18: 法律文书校验纠错辅助工具 引入正则表达式规则库检测合同条款表述准确性防止因措辞不当引发法律纠纷风险隐患。 #### 案例 19: 教育培训机构课程排课调度算法优化 研究遗传算法原理应用于教室分配、教师授课时段规划等问题提高教学资源配置效率降低运营成本支出。 #### 案例 20: 物流运输路线规划模拟仿真 搭建 GIS 地理信息系统环境计算最优配送路径减少车辆行驶里程节省燃油消耗费用开支。 #### 案例 21: 医疗机构挂号预约服务平台建设 整合医院HIS核心业务流程打造便捷高效的线上就医咨询入口改善患者就诊体验满意度评价体系。 #### 案例 22: 政府部门信息公开发布门户运维保障 遵循政府网站建设标准规范确保政务公开透明度满足公众知情权需求促进社会和谐稳定发展局面形成。 #### 案例 23: 科研项目申报材料审核评分机制探索实践 参照同行评议方法论框架评估科研成果质量水平为评审专家打分提供科学依据支撑学术诚信体系建设工作推进落实到位。 #### 案例 24: 新闻传媒行业舆情监测预警应急响应预案演练 部署大数据分析引擎实时捕捉互联网舆论热点话题演变轨迹提前做好危机公关准备工作有效应对突发公共事件带来的负面影响冲击挑战。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小庄-Python办公

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值