最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python解放雙手的15個超實(shí)用的自動化辦公腳本(附代碼)

 更新時間:2025年12月01日 08:55:01   作者:小莊-Python辦公  
在日常工作中,你是否曾被那些枯燥、重復(fù)、耗時的數(shù)據(jù)處理、文件整理或信息錄入任務(wù)所困擾,本篇博客將為你精心挑選并詳細(xì)講解15個超實(shí)用的Python自動化辦公腳本,大家可以根據(jù)需要進(jìn)行選擇

引言:告別重復(fù),擁抱效率!

在日常工作中,你是否曾被那些枯燥、重復(fù)、耗時的數(shù)據(jù)處理、文件整理或信息錄入任務(wù)所困擾?想象一下,如果有一個“智能助手”能夠幫你自動完成這些繁瑣的工作,那該有多棒!

好消息是,這個“智能助手”就是Python!Python以其簡潔的語法和強(qiáng)大的庫生態(tài),成為了自動化辦公領(lǐng)域的利器。無論你是數(shù)據(jù)分析師、行政人員、市場營銷,還是任何需要處理大量文件的職場人,掌握一些Python自動化腳本都能極大地提升你的工作效率,讓你有更多時間專注于創(chuàng)造性和戰(zhàn)略性工作。

本篇博客將為你精心挑選并詳細(xì)講解15個超實(shí)用的Python自動化辦公腳本,涵蓋文件操作、文本處理、Excel/CSV數(shù)據(jù)處理、圖片操作等多個方面。即使你是編程小白,也能跟著我們的教程一步步操作,親手體驗(yàn)Python帶來的效率革命!

準(zhǔn)備好了嗎?讓我們一起用Python解放雙手,告別重復(fù)勞動,邁向高效辦公的新時代!

準(zhǔn)備工作:搭建你的Python自動化環(huán)境

在開始編寫腳本之前,我們需要先搭建好Python的運(yùn)行環(huán)境。別擔(dān)心,這比你想象的要簡單!

1. 安裝Python解釋器

  • 下載Python
  • 選擇版本: 建議下載最新穩(wěn)定版本(如Python 3.9+)。
  • 安裝: 運(yùn)行下載的安裝包。特別注意:在安裝過程中,務(wù)必勾選“Add Python to PATH”選項(xiàng),這將使你能夠在命令行中直接運(yùn)行Python。
  • 驗(yàn)證安裝: 打開命令行(Windows按Win+R,輸入cmd回車;macOS/Linux打開終端),輸入 python --versionpython3 --version,如果顯示Python版本號,則說明安裝成功。

2. 安裝代碼編輯器(推薦VS Code)

雖然任何文本編輯器都可以編寫Python代碼,但專業(yè)的代碼編輯器能提供語法高亮、代碼補(bǔ)全、調(diào)試等功能,極大地提升開發(fā)體驗(yàn)。

  • 下載VS Code
  • 安裝: 按照指引安裝即可。
  • 安裝Python擴(kuò)展: 打開VS Code,在側(cè)邊欄點(diǎn)擊“擴(kuò)展”圖標(biāo)(或按Ctrl+Shift+X),搜索“Python”并安裝由Microsoft提供的擴(kuò)展。

3. 安裝必要的Python庫

Python的強(qiáng)大之處在于其豐富的第三方庫。我們將使用pip(Python的包管理器)來安裝這些庫。

打開命令行/終端。

逐一安裝以下庫(有些腳本可能只用到其中一部分,但為了方便,我們一次性安裝):

pip install pandas openpyxl PyPDF2 Pillow pyperclip requests beautifulsoup4 schedule
  • pandas: 處理Excel和CSV文件的利器。
  • openpyxl: pandas處理xlsx格式文件需要依賴它。
  • PyPDF2: 用于PDF文件的讀寫操作。
  • Pillow: 強(qiáng)大的圖像處理庫。
  • pyperclip: 方便地操作剪貼板。
  • requests: 用于發(fā)送HTTP請求,抓取網(wǎng)頁內(nèi)容。
  • beautifulsoup4: 用于解析HTML/XML文檔,提取數(shù)據(jù)。
  • schedule: 用于定時任務(wù)。

實(shí)戰(zhàn)腳本詳解:15個超實(shí)用的自動化辦公腳本

下面,我們將逐一介紹這15個腳本。每個腳本都包含詳細(xì)的代碼、用途說明和使用方法,請跟著步驟親手實(shí)踐!

重要提示:

  • 文件路徑: 在Windows系統(tǒng)中,路徑通常使用反斜杠 \ (如 C:\Users\YourName\Desktop)。在Python字符串中,反斜杠是轉(zhuǎn)義字符,所以你需要使用雙反斜杠 \\ (如 C:\\Users\\YourName\\Desktop),或者使用原始字符串 r'C:\Users\YourName\Desktop'。更推薦的做法是使用正斜杠 /,Python在所有操作系統(tǒng)上都能很好地處理它 (如 C:/Users/YourName/Desktop)。
  • 代碼保存: 將每個腳本的代碼保存為一個 .py 文件(例如 rename_files.py)。
  • 運(yùn)行腳本: 在命令行/終端中,導(dǎo)航到你保存腳本的文件夾,然后運(yùn)行 python your_script_name.py

1. 批量重命名文件

這個腳本可以幫助你快速、批量地重命名一個文件夾內(nèi)的所有文件,例如添加前綴、后綴或替換部分文件名。

  • 用途: 整理照片、文檔、下載文件時非常有用。
  • 所需庫: os (Python內(nèi)置庫)
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"發(fā)生錯誤: {e}")

if __name__ == "__main__":
    # 請修改為你實(shí)際的文件夾路徑、舊字符串和新字符串
    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)

使用方法:

  • 將代碼保存為 rename_files.py。
  • 修改 folder 變量為你需要操作的文件夾路徑。
  • 修改 old_textnew_text 為你想要替換的字符串。
  • 運(yùn)行 python rename_files.py

2. 按文件類型整理文件

這個腳本能自動識別文件類型(通過擴(kuò)展名),并將它們移動到對應(yīng)的子文件夾中,讓你的文件夾井井有條。

  • 用途: 桌面文件清理、下載文件夾整理。
  • 所需庫: os, shutil (Python內(nèi)置庫)
import os
import shutil

def organize_files_by_type(folder_path):
    """
    根據(jù)文件類型(擴(kuò)展名)將文件移動到對應(yīng)的子文件夾中。
    :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() # 獲取文件擴(kuò)展名
                if not file_extension: # 沒有擴(kuò)展名的文件跳過
                    continue

                # 創(chuàng)建目標(biāo)文件夾
                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"發(fā)生錯誤: {e}")

if __name__ == "__main__":
    # 請修改為你實(shí)際的文件夾路徑
    folder = "D:/MyDocuments/Downloads" # 示例路徑
    organize_files_by_type(folder)

使用方法:

  • 將代碼保存為 organize_files.py。
  • 修改 folder 變量為你需要整理的文件夾路徑。
  • 運(yùn)行 python organize_files.py

3. 查找并刪除空文件夾

這個腳本可以遞歸地遍歷指定目錄,找出并刪除所有空文件夾,幫助你清理磁盤空間。

用途: 清理項(xiàng)目殘余、舊的下載目錄等。

所需庫: os (Python內(nèi)置庫)

import os

def delete_empty_folders(folder_path):
    """
    遞歸查找并刪除指定路徑下的所有空文件夾。
    :param folder_path: 需要清理的根文件夾路徑
    :return: 被刪除的空文件夾數(shù)量
    """
    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__":
    # 請修改為你實(shí)際的根文件夾路徑
    root_folder = "D:/MyDocuments/Temp" # 示例路徑
    print(f"開始清理 '{root_folder}' 下的空文件夾...")
    count = delete_empty_folders(root_folder)
    print(f"清理完成,共刪除 {count} 個空文件夾。")

使用方法:

  • 將代碼保存為 delete_empty_folders.py。
  • 修改 root_folder 變量為你需要清理的根文件夾路徑。
  • 運(yùn)行 python delete_empty_folders.py

4. 合并多個TXT文件

將多個文本文件內(nèi)容合并到一個新的文本文件中,非常適合合并日志、報告等。

用途: 匯總報告、日志分析。

所需庫: Python內(nèi)置的文件I/O操作

import os

def merge_txt_files(folder_path, output_filename="merged_output.txt"):
    """
    合并指定文件夾下所有TXT文件的內(nèi)容到一個新的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--- 文件結(jié)束: {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--- 文件結(jié)束: {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"發(fā)生錯誤: {e}")

if __name__ == "__main__":
    # 請修改為你實(shí)際的文件夾路徑
    folder = "D:/MyDocuments/Reports" # 示例路徑
    merge_txt_files(folder, "Annual_Report_Combined.txt")

使用方法:

  • 將代碼保存為 merge_txt.py
  • 修改 folder 變量為你需要合并TXT文件的文件夾路徑。
  • (可選)修改 output_filename 為你想要的輸出文件名。
  • 運(yùn)行 python merge_txt.py。

5. 批量查找替換文本內(nèi)容

在多個文本文件或代碼文件中批量查找并替換指定字符串,省去手動修改的麻煩。

用途: 代碼重構(gòu)、文檔更新、統(tǒng)一術(shù)語。

所需庫: Python內(nèi)置的文件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: 需要處理的文件擴(kuò)展名 (例如 ".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}' 時發(fā)生錯誤: {e}")
    print(f"\n批量查找替換完成,共修改了 {replaced_count} 個文件。")

if __name__ == "__main__":
    # 請修改為你實(shí)際的文件夾路徑、舊文本、新文本和文件擴(kuò)展名
    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)

使用方法:

  • 將代碼保存為 batch_replace.py。
  • 修改 folder、old_string、new_stringfile_ext。
  • 運(yùn)行 python batch_replace.py。

6. 將CSV文件轉(zhuǎn)換為Excel

將一個或多個CSV文件轉(zhuǎn)換為Excel的XLSX格式,方便數(shù)據(jù)管理和共享。

用途: 數(shù)據(jù)格式轉(zhuǎn)換、兼容不同軟件。

所需庫: pandas

import pandas as pd
import os

def csv_to_excel(csv_folder_path, output_excel_filename="merged_output.xlsx"):
    """
    將指定文件夾下的所有CSV文件合并并轉(zhuǎn)換為一個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}' 時發(fā)生錯誤: {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文件已成功合并并轉(zhuǎn)換為Excel文件: '{output_path}'")
    except Exception as e:
        print(f"寫入Excel文件失敗: {e}")

if __name__ == "__main__":
    # 請修改為你實(shí)際的文件夾路徑和輸出文件名
    csv_folder = "D:/MyDocuments/Data/Sales" # 示例路徑
    csv_to_excel(csv_folder, "Sales_Data_Combined.xlsx")

使用方法:

  • 將代碼保存為 csv_to_excel.py。
  • 修改 csv_folder 變量為你包含CSV文件的文件夾路徑。
  • (可選)修改 output_excel_filename。
  • 運(yùn)行 python csv_to_excel.py

7. 合并多個Excel文件

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

用途: 匯總各部門報告、合并不同日期的數(shù)據(jù)。

所需庫: 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}' 時發(fā)生錯誤: {e}")

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

if __name__ == "__main__":
    # 請修改為你實(shí)際的文件夾路徑和輸出文件名
    excel_folder = "D:/MyDocuments/Data/MonthlyReports" # 示例路徑
    merge_excel_files(excel_folder, "Combined_Monthly_Reports.xlsx")

使用方法:

  • 將代碼保存為 merge_excel.py
  • 修改 excel_folder 變量為你包含Excel文件的文件夾路徑。
  • (可選)修改 output_excel_filename
  • 運(yùn)行 python merge_excel.py。

8. 從Excel中提取特定數(shù)據(jù)

根據(jù)條件從Excel文件中篩選、提取所需的數(shù)據(jù),并保存為新的Excel文件或CSV文件。

用途: 數(shù)據(jù)分析預(yù)處理、生成報告子集。

所需庫: pandas

import pandas as pd
import os

def extract_data_from_excel(input_excel_path, output_filename="extracted_data.xlsx"):
    """
    從Excel文件中讀取數(shù)據(jù),并根據(jù)條件提取特定數(shù)據(jù)。
    :param input_excel_path: 輸入的Excel文件路徑
    :param output_filename: 提取數(shù)據(jù)后保存的輸出文件名
    """
    try:
        df = pd.read_excel(input_excel_path)
        print("原始數(shù)據(jù)前5行:")
        print(df.head())

        # 示例:提取 '銷售額' 大于 5000 且 '地區(qū)' 為 '華東' 的數(shù)據(jù)
        # 請根據(jù)你的實(shí)際數(shù)據(jù)列名和條件進(jìn)行修改
        extracted_df = df[(df['銷售額'] > 5000) & (df['地區(qū)'] == '華東')]

        output_path = os.path.join(os.path.dirname(input_excel_path), output_filename)
        extracted_df.to_excel(output_path, index=False)
        print(f"\n成功提取數(shù)據(jù)并保存到 '{output_path}'")
        print("提取數(shù)據(jù)前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文件時發(fā)生錯誤: {e}")

if __name__ == "__main__":
    # 請修改為你實(shí)際的輸入Excel文件路徑
    input_file = "D:/MyDocuments/Data/Sales_Data.xlsx" # 示例路徑

    # 請確保你的Excel文件中有 '銷售額' 和 '地區(qū)' 列,并包含相應(yīng)的數(shù)據(jù)
    # 如果沒有,請根據(jù)你的數(shù)據(jù)調(diào)整篩選條件或創(chuàng)建示例Excel文件進(jìn)行測試。
    # 示例Excel文件內(nèi)容 (Sales_Data.xlsx):
    # 銷售員,地區(qū),銷售額,產(chǎn)品
    # 張三,華東,6000,A
    # 李四,華南,4500,B
    # 王五,華東,7200,C
    # 趙六,華北,3000,A
    # 錢七,華東,5500,B

    extract_data_from_excel(input_file, "High_Sales_East_Region.xlsx")

使用方法:

  • 將代碼保存為 extract_excel_data.py。
  • 修改 input_file 為你的Excel文件路徑。
  • 根據(jù)你的Excel文件內(nèi)容,修改 extracted_df 這一行中的列名和篩選條件。
  • 運(yùn)行 python extract_excel_data.py。

9. 批量圖片縮放

批量調(diào)整一個文件夾內(nèi)所有圖片的尺寸,可用于優(yōu)化網(wǎng)站圖片、制作縮略圖等。

用途: 網(wǎng)站圖片優(yōu)化、批量生成縮略圖。

所需庫: 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: 目標(biāo)尺寸 (寬度, 高度)
    """
    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}' 時發(fā)生錯誤: {e}")
    print("\n所有圖片縮放完成!")

if __name__ == "__main__":
    # 請修改為你實(shí)際的圖片文件夾路徑和目標(biāo)尺寸
    image_folder = "D:/MyDocuments/ImageGallery" # 示例路徑
    target_size = (1280, 720) # 目標(biāo)寬度和高度

    batch_resize_images(image_folder, size=target_size)

使用方法:

  • 將代碼保存為 resize_images.py
  • 修改 image_folder 為你的圖片文件夾路徑。
  • 修改 target_size 為你想要的圖片尺寸。
  • 運(yùn)行 python resize_images.py。

10. 批量圖片格式轉(zhuǎn)換

將一個文件夾內(nèi)的所有圖片批量轉(zhuǎn)換為另一種格式(例如PNG轉(zhuǎn)JPG,或JPG轉(zhuǎn)PNG)。

用途: 統(tǒng)一圖片格式、兼容不同平臺。

所需庫: Pillow (PIL)

from PIL import Image
import os

def batch_convert_images(folder_path, output_folder_name="converted_images", target_format="PNG"):
    """
    批量轉(zhuǎn)換指定文件夾下的所有圖片格式。
    :param folder_path: 包含圖片的文件夾路徑
    :param output_folder_name: 轉(zhuǎn)換后圖片保存的子文件夾名稱
    :param target_format: 目標(biāo)格式 (例如 "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):
        # 排除已是目標(biāo)格式的文件,防止重復(fù)處理
        if not filename.lower().endswith(f'.{target_format.lower()}'):
            filepath = os.path.join(folder_path, filename)
            try:
                with Image.open(filepath) as img:
                    # 構(gòu)建新的文件名和路徑
                    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}' 已轉(zhuǎn)換為 {target_format} 格式并保存到 '{output_folder_name}'")
            except Exception as e:
                print(f"處理圖片 '{filename}' 時發(fā)生錯誤: {e}")
    print("\n所有圖片格式轉(zhuǎn)換完成!")

if __name__ == "__main__":
    # 請修改為你實(shí)際的圖片文件夾路徑和目標(biāo)格式
    image_folder = "D:/MyDocuments/ImageGallery" # 示例路徑
    target_format = "JPEG" # 例如 "PNG", "JPEG", "BMP"

    batch_convert_images(image_folder, target_format=target_format)

使用方法:

  • 將代碼保存為 convert_images.py
  • 修改 image_folder 為你的圖片文件夾路徑。
  • 修改 target_format 為你想要轉(zhuǎn)換的目標(biāo)格式(如 “JPEG”, “PNG”)。
  • 運(yùn)行 python convert_images.py。

11. 自動打開指定網(wǎng)頁

使用默認(rèn)瀏覽器打開一個或多個指定的網(wǎng)頁鏈接。

用途: 每日工作網(wǎng)站快速啟動、批量打開參考資料。

所需庫: webbrowser (Python內(nèi)置庫)

import webbrowser
import time

def open_websites(urls):
    """
    在默認(rèn)瀏覽器中打開一個或多個指定的網(wǎng)頁鏈接。
    :param urls: 一個包含網(wǎng)頁鏈接的列表
    """
    for url in urls:
        try:
            webbrowser.open_new_tab(url)
            print(f"已打開網(wǎng)頁: {url}")
            time.sleep(1) # 暫停1秒,避免同時打開過多標(biāo)簽頁導(dǎo)致瀏覽器卡頓
        except Exception as e:
            print(f"無法打開網(wǎng)頁 '{url}': {e}")
    print("\n所有指定網(wǎng)頁已嘗試打開。")

if __name__ == "__main__":
    # 請修改為你需要打開的網(wǎng)頁鏈接列表
    my_work_websites = [
        "https://www.google.com",
        "https://chat.openai.com",
        "https://github.com",
        "https://www.example.com" # 替換為你的實(shí)際網(wǎng)址
    ]
    open_websites(my_work_websites)

使用方法:

  • 將代碼保存為 open_websites.py。
  • 修改 my_work_websites 列表,填入你想要打開的網(wǎng)址。
  • 運(yùn)行 python open_websites.py

12. 定時提醒/消息

設(shè)置一個定時提醒,在指定時間后彈出一個簡單的消息。這個例子使用命令行輸出,你可以進(jìn)一步擴(kuò)展為桌面通知。

用途: 午休提醒、會議提醒、任務(wù)截止提醒。

所需庫: time (Python內(nèi)置庫)

import time

def set_timer_reminder(minutes, message):
    """
    設(shè)置一個定時提醒。
    :param minutes: 提醒間隔時間(分鐘)
    :param message: 提醒消息內(nèi)容
    """
    seconds = minutes * 60
    print(f"提醒已設(shè)置!將在 {minutes} 分鐘后(即 {seconds} 秒后)顯示消息:'{message}'")
    time.sleep(seconds)
    print("\n" + "="*30)
    print(f"提醒時間到!消息:{message}")
    print("="*30 + "\n")

if __name__ == "__main__":
    # 請修改為你需要設(shè)置的提醒時間和消息
    reminder_minutes = 30 # 30分鐘后提醒
    reminder_message = "該休息一下眼睛了!"
    set_timer_reminder(reminder_minutes, reminder_message)

    # 另一個例子
    # set_timer_reminder(5, "記得保存當(dāng)前工作!")

使用方法:

  • 將代碼保存為 timer_reminder.py
  • 修改 reminder_minutes 為你想要設(shè)置的分鐘數(shù)。
  • 修改 reminder_message 為你想要顯示的提醒消息。
  • 運(yùn)行 python timer_reminder.py。

13. 剪貼板內(nèi)容操作

快速獲取剪貼板內(nèi)容或?qū)⑽谋緩?fù)制到剪貼板,實(shí)現(xiàn)自動化復(fù)制粘貼。

用途: 批量復(fù)制粘貼、快速填充表單。

所需庫: pyperclip

import pyperclip

def clipboard_operations():
    """
    演示剪貼板的復(fù)制和粘貼操作。
    """
    print("--- 剪貼板操作演示 ---")

    # 1. 獲取剪貼板內(nèi)容
    try:
        clipboard_content = pyperclip.paste()
        print(f"當(dāng)前剪貼板內(nèi)容: '{clipboard_content}'")
    except pyperclip.PyperclipException as e:
        print(f"無法獲取剪貼板內(nèi)容: {e}. 請確保安裝了必要的剪貼板后端(如xclip/xsel on Linux)。")
        return # 如果無法獲取,則退出,避免后續(xù)錯誤

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

    # 3. 再次獲取剪貼板內(nèi)容,驗(yàn)證是否成功復(fù)制
    new_clipboard_content = pyperclip.paste()
    print(f"驗(yàn)證:新的剪貼板內(nèi)容為: '{new_clipboard_content}'")

    if new_clipboard_content == text_to_copy:
        print("剪貼板操作成功!")
    else:
        print("剪貼板操作可能出現(xiàn)問題。")

if __name__ == "__main__":
    clipboard_operations()

使用方法:

  • 將代碼保存為 clipboard_tool.py。
  • 運(yùn)行 python clipboard_tool.py。
  • 你可以手動復(fù)制一些文本到剪貼板,然后運(yùn)行腳本查看。

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__":
    # 請修改為你實(shí)際的PDF文件夾路徑
    pdf_folder = "D:/MyDocuments/Reports/Quarterly" # 示例路徑
    merge_pdf_files(pdf_folder, "Q4_Combined_Report.pdf")

使用方法:

  • 將代碼保存為 merge_pdf.py。
  • 修改 pdf_folder 為你的PDF文件文件夾路徑。
  • (可選)修改 output_filename。
  • 運(yùn)行 python merge_pdf.py

15. PDF文本內(nèi)容提取

從PDF文件中提取所有文本內(nèi)容,并保存到TXT文件中。

用途: PDF內(nèi)容檢索、數(shù)據(jù)抽取、文本分析。

所需庫: PyPDF2

from PyPDF2 import PdfReader
import os

def extract_text_from_pdf(pdf_path, output_txt_filename=None):
    """
    從PDF文件中提取所有文本內(nèi)容并保存到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文件時發(fā)生錯誤: {e}")

if __name__ == "__main__":
    # 請修改為你實(shí)際的PDF文件路徑
    input_pdf = "D:/MyDocuments/Documents/Contract_Draft.pdf" # 示例路徑
    extract_text_from_pdf(input_pdf)

    # 也可以指定輸出文件名
    # extract_text_from_pdf(input_pdf, "Contract_Text.txt")

使用方法:

  • 將代碼保存為 extract_pdf_text.py。
  • 修改 input_pdf 為你的PDF文件路徑。
  • (可選)修改 output_txt_filename。
  • 運(yùn)行 python extract_pdf_text.py。

常見問題與提示

在實(shí)踐這些腳本時,你可能會遇到一些問題。以下是一些常見問題及其解決方案:

1.ModuleNotFoundError (模塊未找到錯誤):

  • 原因: 對應(yīng)的Python庫沒有安裝。
  • 解決方案: 確保你按照“準(zhǔn)備工作”章節(jié)的指示,使用 pip install 庫名 安裝了所有必要的庫。例如,如果出現(xiàn) ModuleNotFoundError: No module named 'pandas',則運(yùn)行 pip install pandas。

2.文件路徑問題 (FileNotFoundError / PermissionError):

原因: 文件路徑不正確,或者你沒有訪問該路徑的權(quán)限。

解決方案:

  • 仔細(xì)檢查路徑字符串是否拼寫正確,包括大小寫。
  • Windows路徑建議使用正斜杠 / (例如 C:/Users/Desktop/) 或雙反斜杠 \\ (例如 C:\\Users\\Desktop\\),或者使用原始字符串 r'C:\Users\Desktop\'。
  • 確保Python腳本有權(quán)限讀寫目標(biāo)文件夾。如果是在系統(tǒng)保護(hù)目錄(如C:\Windows或程序文件目錄)操作,可能會遇到權(quán)限問題。嘗試將文件放在用戶目錄(如桌面、文檔)進(jìn)行測試。

3.編碼問題 (UnicodeDecodeError):

  • 原因: 文本文件(如TXT、CSV)的編碼格式與腳本中指定的編碼不一致(默認(rèn)為UTF-8)。
  • 解決方案:open() 函數(shù)中嘗試不同的編碼,如 encoding='gbk'encoding='latin-1'。在我們的腳本中已經(jīng)嘗試了UTF-8和GBK。

4.文件被占用:

  • 原因: 你正在嘗試操作的文件被其他程序(如Excel、Word、圖片查看器)打開并占用。
  • 解決方案: 關(guān)閉所有可能占用目標(biāo)文件的程序,然后再運(yùn)行腳本。

5.不熟悉命令行操作:

解決方案: 多加練習(xí)。記住 cd 命令用于切換目錄,dir (Windows) 或 ls (macOS/Linux) 用于列出當(dāng)前目錄內(nèi)容,python your_script.py 用于運(yùn)行腳本。

6.代碼錯誤 (SyntaxError, TypeError 等):

解決方案:

  • 仔細(xì)閱讀錯誤信息,它通常會告訴你錯誤發(fā)生在哪一行以及錯誤類型。
  • 使用VS Code等編輯器,它們通常會高亮顯示語法錯誤。
  • 對于初學(xué)者,逐步運(yùn)行(或在關(guān)鍵位置添加 print() 語句)是很好的調(diào)試方法,可以查看變量的值和代碼的執(zhí)行流程。

總結(jié)與展望

恭喜你!通過學(xué)習(xí)和實(shí)踐這15個自動化腳本,你已經(jīng)邁出了Python自動化辦公的第一步。你不僅學(xué)會了如何用代碼解決實(shí)際工作中的痛點(diǎn),更重要的是,你掌握了一種全新的思考問題和提升效率的方式。

Python自動化辦公的潛力遠(yuǎn)不止于此。你可以繼續(xù)探索:

  • 更復(fù)雜的Excel操作: 數(shù)據(jù)透 視、圖表生成、與其他數(shù)據(jù)源聯(lián)動。
  • Web自動化: 使用 Selenium 模擬瀏覽器操作,實(shí)現(xiàn)自動登錄、表單填寫、數(shù)據(jù)抓取。
  • 郵件自動化: 自動發(fā)送郵件、處理附件。
  • GUI自動化: 使用 PyAutoGUI 模擬鼠標(biāo)鍵盤操作,實(shí)現(xiàn)與任何桌面應(yīng)用的交互。
  • 定時任務(wù): 使用操作系統(tǒng)自帶的定時任務(wù)(如Windows的任務(wù)計劃程序,Linux的Cron)結(jié)合Python腳本,實(shí)現(xiàn)無人值守的自動化。

行動起來!

  • 實(shí)踐是最好的老師: 不要只看不做,選擇一兩個你最感興趣或最能解決你實(shí)際問題的腳本,親自修改參數(shù)并運(yùn)行它。
  • 從模仿到創(chuàng)造: 在理解了這些腳本的原理后,嘗試根據(jù)自己的需求進(jìn)行修改和組合,創(chuàng)造出屬于你自己的自動化工具。
  • 持續(xù)學(xué)習(xí): Python的世界廣闊而精彩,保持好奇心,不斷學(xué)習(xí)新的庫和技術(shù)。

以上就是Python解放雙手的15個超實(shí)用的自動化辦公腳本(附代碼)的詳細(xì)內(nèi)容,更多關(guān)于Python自動化辦公腳本的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解django+django-celery+celery的整合實(shí)戰(zhàn)

    詳解django+django-celery+celery的整合實(shí)戰(zhàn)

    這篇文章主要介紹了詳解django+django-celery+celery的整合實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python Pickle 實(shí)現(xiàn)在同一個文件中序列化多個對象

    Python Pickle 實(shí)現(xiàn)在同一個文件中序列化多個對象

    今天小編就為大家分享一篇Python Pickle 實(shí)現(xiàn)在同一個文件中序列化多個對象,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python中利用mpld3創(chuàng)建交互式Matplotlib圖表的代碼示例

    Python中利用mpld3創(chuàng)建交互式Matplotlib圖表的代碼示例

    mpld3 是一個 Python 庫,它將 Matplotlib 圖表轉(zhuǎn)換為 D3.js(JavaScript 繪圖庫)可解釋的格式,從而實(shí)現(xiàn)了在瀏覽器中顯示并交互的功能,在本文中,我們將介紹如何使用 mpld3 在 Python 中創(chuàng)建交互式 Matplotlib 圖表,并提供代碼示例,需要的朋友可以參考下
    2024-05-05
  • Pycharm5個非常有用的方法技巧

    Pycharm5個非常有用的方法技巧

    這篇文章主要介紹了Pycharm5個非常有用的方法技巧,PyCharm?是一款非常強(qiáng)大的編寫?python?代碼的工具。掌握一些小技巧能成倍的提升寫代碼的效率,本篇介紹幾個經(jīng)常使用的小技巧,需要的小伙伴可以參考一下
    2022-07-07
  • Django封裝交互接口代碼

    Django封裝交互接口代碼

    這篇文章主要介紹了Django封裝交互接口代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 使用Django xadmin 實(shí)現(xiàn)修改時間選擇器為不可輸入狀態(tài)

    使用Django xadmin 實(shí)現(xiàn)修改時間選擇器為不可輸入狀態(tài)

    這篇文章主要介紹了使用Django xadmin 實(shí)現(xiàn)修改時間選擇器為不可輸入狀態(tài),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Pandas中DataFrame的基本操作之重新索引講解

    Pandas中DataFrame的基本操作之重新索引講解

    這篇文章主要介紹了Pandas中DataFrame的基本操作之重新索引,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • PyQT5速成教程之Qt Designer介紹與入門

    PyQT5速成教程之Qt Designer介紹與入門

    這篇文章主要介紹了PyQT5速成教程之Qt Designer介紹與入門,本文以PyCharm為例通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Python實(shí)現(xiàn)信息管理系統(tǒng)

    Python實(shí)現(xiàn)信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 如何獲取numpy array前N個最大值

    如何獲取numpy array前N個最大值

    這篇文章主要介紹了獲取numpy array前N個最大值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05

最新評論

牙克石市| 宾川县| 东宁县| 峡江县| 博白县| 揭东县| 台北县| 长岛县| 清丰县| 津南区| 天等县| 台北县| 阿坝| 蒙阴县| 邹平县| 高州市| 分宜县| 瑞金市| 治县。| 恩平市| 延庆县| 四会市| 固阳县| 大名县| 莎车县| 巴林左旗| 绥中县| 秭归县| 白沙| 昌吉市| 黎平县| 全州县| 凤冈县| 崇文区| 沂源县| 福清市| 咸阳市| 芜湖县| 佛坪县| 衡东县| 江门市|