Python中實現(xiàn)文件批量處理的自動化腳本
在實際開發(fā)、數(shù)據(jù)整理或辦公自動化中,我們經(jīng)常需要一次性處理大量文件,例如:
- 批量重命名文件
- 批量復制/移動文件
- 批量壓縮文件
- 批量格式轉換
- 批量讀取與寫入文本內容
Python 的標準庫中,os、shutil、glob 等模塊可以輕松構建各種文件批處理腳本,是自動化辦公與數(shù)據(jù)清洗的利器。
本章將從常見場景出發(fā),通過示例腳本幫助你快速掌握文件批量處理能力。
一、基礎庫介紹
1. os 模塊
提供文件路徑、文件夾、新建/刪除目錄等操作。
常用方法:
os.listdir()os.rename()os.path.exists()os.makedirs()os.remove()
2. shutil 模塊
執(zhí)行高級文件操作:
- 拷貝文件:
shutil.copy() - 移動文件:
shutil.move() - 拷貝整個文件夾:
shutil.copytree()
3. glob 模塊
使用通配符批量匹配文件,例如:
glob.glob("*.txt")
glob.glob("images/*.jpg")
是處理大量文件時非常方便的模塊。
二、批量重命名文件
例如:把文件名全部改為統(tǒng)一格式 img_001.jpg、img_002.jpg。
import os
folder = "images"
files = os.listdir(folder)
for i, filename in enumerate(files, start=1):
old_path = os.path.join(folder, filename)
ext = os.path.splitext(filename)[1]
new_name = f"img_{i:03d}{ext}"
new_path = os.path.join(folder, new_name)
os.rename(old_path, new_path)
print("重命名完成。")
技術要點
os.path.splitext()可獲得文件擴展名i:03d生成 001、002 的數(shù)字序號
三、批量復制/移動文件
1. 批量復制
import shutil
import glob
src_files = glob.glob("data/*.txt")
dst_folder = "backup"
os.makedirs(dst_folder, exist_ok=True)
for file in src_files:
shutil.copy(file, dst_folder)
print("復制完成。")
2. 批量移動
import shutil
import glob
for file in glob.glob("data/*.csv"):
shutil.move(file, "csv_files")
print("移動完成。")
四、批量刪除文件
例如,刪除所有 .log 文件:
import os
import glob
for file in glob.glob("logs/*.log"):
os.remove(file)
print("刪除完成。")
目錄刪除使用 shutil.rmtree("folder")。
五、批量讀取文本內容并寫入?yún)R總文件
比如,你有 100 個 .txt 日志文件,需要匯總到一個文件。
import glob
files = glob.glob("logs/*.txt")
with open("summary.txt", "w", encoding="utf-8") as outfile:
for file in files:
with open(file, "r", encoding="utf-8") as f:
outfile.write(f"=== 文件:{file} ===\n")
outfile.write(f.read())
outfile.write("\n\n")
print("匯總完成。")
六、批量修改文件內容(查找 + 替換)
在大量 .txt 文件中,將所有 "測試" 替換為 "正式":
import glob
for file in glob.glob("docs/*.txt"):
with open(file, "r", encoding="utf-8") as f:
text = f.read()
text = text.replace("測試", "正式")
with open(file, "w", encoding="utf-8") as f:
f.write(text)
print("批量替換完成。")
七、批量壓縮文件(zipfile模塊)
import zipfile
import glob
files = glob.glob("data/*.csv")
with zipfile.ZipFile("data.zip", "w") as zipf:
for file in files:
zipf.write(file)
print("壓縮完成。")
八、批量處理的實戰(zhàn)案例:自動整理下載目錄
下面給出一個實戰(zhàn)腳本,把下載目錄按文件類型分類:
import os
import shutil
import glob
download_folder = "downloads"
file_types = {
"圖片": ["*.jpg", "*.png"],
"視頻": ["*.mp4"],
"壓縮包": ["*.zip", "*.rar"],
"文檔": ["*.pdf", "*.docx", "*.txt"]
}
for folder_name, patterns in file_types.items():
target_folder = os.path.join(download_folder, folder_name)
os.makedirs(target_folder, exist_ok=True)
for pattern in patterns:
for file in glob.glob(os.path.join(download_folder, pattern)):
shutil.move(file, target_folder)
print("下載目錄已整理完畢!")
執(zhí)行后,文件會自動分類到各自目錄,辦公效率提升非常明顯。
九、文件批處理腳本的最佳實踐
- 使用 glob 匹配大量文件更快
- 寫入文件前備份原文件
- 對文件操作加入 try/except 防止腳本崩潰
- 復雜任務建議封裝成函數(shù)或類
示例:
try:
shutil.move(src, dst)
except Exception as e:
print("移動失?。?, e)
十、總結
本章你掌握了 Python 在文件自動化中的核心技能:
- 批量重命名
- 批量復制、移動、刪除
- 批量讀取、寫入和替換內容
- 批量壓縮
- 使用 glob 進行文件匹配
- 實戰(zhàn):自動整理下載目錄
這些腳本結合日常辦公場景,可以最大化提升工作效率,是每個 Python 工程師必須掌握的技能點。
到此這篇關于Python中實現(xiàn)文件批量處理的自動化腳本的文章就介紹到這了,更多相關Python文件批量處理腳本內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python數(shù)據(jù)可視化Pyecharts庫的使用教程
pyecharts是一個用于生成echarts圖表的類庫。echarts是百度開源的一個數(shù)據(jù)可視化庫,用echarts生成的圖可視化效果非常棒。使用pyechart庫可以在python中生成echarts數(shù)據(jù)圖。本文將詳細介紹一下Pyecharts庫的使用,需要的可以參考一下2022-02-02
Python用61行代碼實現(xiàn)圖片像素化的示例代碼
這篇文章主要介紹了Python用61行代碼實現(xiàn)圖片像素化的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-12-12
python中使用smtplib和email模塊發(fā)送郵件實例
python腳本發(fā)郵件,一般會用到smtplib和email這兩個模塊??纯丛撃K怎么使用,先看smtplib模塊。 smtplib模塊定義了一個簡單的SMTP客戶端,可以用來在互聯(lián)網(wǎng)上發(fā)送郵件2014-04-04

