Python中實(shí)現(xiàn)文件批量處理的自動(dòng)化腳本
在實(shí)際開發(fā)、數(shù)據(jù)整理或辦公自動(dòng)化中,我們經(jīng)常需要一次性處理大量文件,例如:
- 批量重命名文件
- 批量復(fù)制/移動(dòng)文件
- 批量壓縮文件
- 批量格式轉(zhuǎn)換
- 批量讀取與寫入文本內(nèi)容
Python 的標(biāo)準(zhǔn)庫中,os、shutil、glob 等模塊可以輕松構(gòu)建各種文件批處理腳本,是自動(dòng)化辦公與數(shù)據(jù)清洗的利器。
本章將從常見場景出發(fā),通過示例腳本幫助你快速掌握文件批量處理能力。
一、基礎(chǔ)庫介紹
1. os 模塊
提供文件路徑、文件夾、新建/刪除目錄等操作。
常用方法:
os.listdir()os.rename()os.path.exists()os.makedirs()os.remove()
2. shutil 模塊
執(zhí)行高級文件操作:
- 拷貝文件:
shutil.copy() - 移動(dòng)文件:
shutil.move() - 拷貝整個(gè)文件夾:
shutil.copytree()
3. glob 模塊
使用通配符批量匹配文件,例如:
glob.glob("*.txt")
glob.glob("images/*.jpg")
是處理大量文件時(shí)非常方便的模塊。
二、批量重命名文件
例如:把文件名全部改為統(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("重命名完成。")
技術(shù)要點(diǎn)
os.path.splitext()可獲得文件擴(kuò)展名i:03d生成 001、002 的數(shù)字序號
三、批量復(fù)制/移動(dòng)文件
1. 批量復(fù)制
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("復(fù)制完成。")
2. 批量移動(dòng)
import shutil
import glob
for file in glob.glob("data/*.csv"):
shutil.move(file, "csv_files")
print("移動(dòng)完成。")
四、批量刪除文件
例如,刪除所有 .log 文件:
import os
import glob
for file in glob.glob("logs/*.log"):
os.remove(file)
print("刪除完成。")
目錄刪除使用 shutil.rmtree("folder")。
五、批量讀取文本內(nèi)容并寫入?yún)R總文件
比如,你有 100 個(gè) .txt 日志文件,需要匯總到一個(gè)文件。
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("匯總完成。")
六、批量修改文件內(nèi)容(查找 + 替換)
在大量 .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("壓縮完成。")
八、批量處理的實(shí)戰(zhàn)案例:自動(dòng)整理下載目錄
下面給出一個(gè)實(shí)戰(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í)行后,文件會(huì)自動(dòng)分類到各自目錄,辦公效率提升非常明顯。
九、文件批處理腳本的最佳實(shí)踐
- 使用 glob 匹配大量文件更快
- 寫入文件前備份原文件
- 對文件操作加入 try/except 防止腳本崩潰
- 復(fù)雜任務(wù)建議封裝成函數(shù)或類
示例:
try:
shutil.move(src, dst)
except Exception as e:
print("移動(dòng)失?。?, e)
十、總結(jié)
本章你掌握了 Python 在文件自動(dòng)化中的核心技能:
- 批量重命名
- 批量復(fù)制、移動(dòng)、刪除
- 批量讀取、寫入和替換內(nèi)容
- 批量壓縮
- 使用 glob 進(jìn)行文件匹配
- 實(shí)戰(zhàn):自動(dòng)整理下載目錄
這些腳本結(jié)合日常辦公場景,可以最大化提升工作效率,是每個(gè) Python 工程師必須掌握的技能點(diǎn)。
到此這篇關(guān)于Python中實(shí)現(xiàn)文件批量處理的自動(dòng)化腳本的文章就介紹到這了,更多相關(guān)Python文件批量處理腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python數(shù)據(jù)可視化Pyecharts庫的使用教程
pyecharts是一個(gè)用于生成echarts圖表的類庫。echarts是百度開源的一個(gè)數(shù)據(jù)可視化庫,用echarts生成的圖可視化效果非常棒。使用pyechart庫可以在python中生成echarts數(shù)據(jù)圖。本文將詳細(xì)介紹一下Pyecharts庫的使用,需要的可以參考一下2022-02-02
Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼
這篇文章主要介紹了Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
Python操作Excel的10個(gè)必學(xué)腳本分享
Excel表格操作是我們?nèi)粘9ぷ髦胁豢苫蛉钡囊徊糠?而Python憑借其強(qiáng)大的數(shù)據(jù)處理能力,可以極大地提升我們操作Excel的效率,本文將介紹10個(gè)必學(xué)的Python腳本,需要的可以零基礎(chǔ)2025-03-03
Pycharm學(xué)習(xí)教程(2) 代碼風(fēng)格
這篇文章主要為大家詳細(xì)介紹了最全的Pycharm學(xué)習(xí)教程第二篇代碼風(fēng)格,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
PyQt5+requests實(shí)現(xiàn)車票查詢工具
這篇文章主要為大家詳細(xì)介紹了PyQt5+requests實(shí)現(xiàn)車票查詢工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
python學(xué)習(xí)之subprocess模塊詳解
這篇文章主要介紹了python學(xué)習(xí)之subprocess模塊的相關(guān)資料,該模塊用于創(chuàng)建子進(jìn)程并與其進(jìn)行交互,它提供了多個(gè)函數(shù)和類來執(zhí)行操作系統(tǒng)命令、獲取命令輸出以及管理子進(jìn)程的生命周期,需要的朋友可以參考下2024-12-12
python中使用smtplib和email模塊發(fā)送郵件實(shí)例
python腳本發(fā)郵件,一般會(huì)用到smtplib和email這兩個(gè)模塊。看看該模塊怎么使用,先看smtplib模塊。 smtplib模塊定義了一個(gè)簡單的SMTP客戶端,可以用來在互聯(lián)網(wǎng)上發(fā)送郵件2014-04-04

