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)庫(kù)中,os、shutil、glob 等模塊可以輕松構(gòu)建各種文件批處理腳本,是自動(dòng)化辦公與數(shù)據(jù)清洗的利器。
本章將從常見場(chǎng)景出發(fā),通過(guò)示例腳本幫助你快速掌握文件批量處理能力。
一、基礎(chǔ)庫(kù)介紹
1. os 模塊
提供文件路徑、文件夾、新建/刪除目錄等操作。
常用方法:
os.listdir()os.rename()os.path.exists()os.makedirs()os.remove()
2. shutil 模塊
執(zhí)行高級(jí)文件操作:
- 拷貝文件:
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ù)字序號(hào)
三、批量復(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 文件中,將所有 "測(cè)試" 替換為 "正式":
import glob
for file in glob.glob("docs/*.txt"):
with open(file, "r", encoding="utf-8") as f:
text = f.read()
text = text.replace("測(cè)試", "正式")
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 匹配大量文件更快
- 寫入文件前備份原文件
- 對(duì)文件操作加入 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é)合日常辦公場(chǎng)景,可以最大化提升工作效率,是每個(gè) Python 工程師必須掌握的技能點(diǎn)。
到此這篇關(guān)于Python中實(shí)現(xiàn)文件批量處理的自動(dòng)化腳本的文章就介紹到這了,更多相關(guān)Python文件批量處理腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python unittest discover批量執(zhí)行代碼實(shí)例
這篇文章主要介紹了Python unittest discover批量執(zhí)行代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
matplotlib畫圖之修改坐標(biāo)軸刻度問(wèn)題
這篇文章主要介紹了matplotlib畫圖之修改坐標(biāo)軸刻度問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
python如何解析配置文件并應(yīng)用到項(xiàng)目中
這篇文章主要介紹了python如何解析配置文件并應(yīng)用到項(xiàng)目中,如果我們更換了電腦也可以繼續(xù)使用原來(lái)的文件,只要把里面的數(shù)據(jù)拷貝到游戲執(zhí)行的配置文件里面就可以了,我們重新再進(jìn)入就不用重新設(shè)置內(nèi)掛的配置了,需要的朋友可以參考下2019-06-06
優(yōu)化Python代碼使其加快作用域內(nèi)的查找
這篇文章主要介紹了優(yōu)化Python代碼使其加快作用域內(nèi)的搜索,文中介紹了CPython相關(guān)的C代碼來(lái)對(duì)查找功能進(jìn)行優(yōu)化,加快搜索的速度,需要的朋友可以參考下2015-03-03
Flask框架學(xué)習(xí)筆記之消息提示與異常處理操作詳解
這篇文章主要介紹了Flask框架學(xué)習(xí)筆記之消息提示與異常處理操作,結(jié)合實(shí)例形式分析了flask框架表單登陸消息提示、錯(cuò)誤模板調(diào)用及異常處理相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
Python requests及aiohttp速度對(duì)比代碼實(shí)例
這篇文章主要介紹了Python requests及aiohttp速度對(duì)比代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
PyTorch使用tensorboard的SummaryWriter報(bào)錯(cuò)問(wèn)題解決方案
PyTorch使用tensorboard可以顯示網(wǎng)絡(luò)運(yùn)行情況,但偶爾使用SummaryWriter時(shí)遇到Segmentation fault錯(cuò)誤,這篇文章主要介紹了PyTorch使用tensorboard的SummaryWriter報(bào)錯(cuò)問(wèn)題解決方案,需要的朋友可以參考下2024-06-06

