Python批量修改文件名操作指南(文件名的替換、前綴、后綴的添加)
前言
在日常工作中,經(jīng)常會(huì)遇到需要批量修改文件名的情況,可能是為了更好的組織文件,也可能是為了處理大量的數(shù)據(jù)文件。Python提供了強(qiáng)大的工具和庫來處理這個(gè)任務(wù),本文將介紹如何使用Python來批量修改文件名,包括文件名的替換、前綴、后綴的添加等多種操作。
使用os模塊和os.path模塊
Python的os模塊和os.path模塊提供了文件和目錄操作的基本功能,可以用于文件名的操作。
1. 文件名替換
要批量替換文件名中的特定字符串,可以使用os.listdir()列出目錄中的所有文件,然后使用字符串的replace()方法替換文件名中的字符串。
import os
def replace_in_filenames(directory, old_str, new_str):
for filename in os.listdir(directory):
if old_str in filename:
new_filename = filename.replace(old_str, new_str)
os.rename(os.path.join(directory, filename), os.path.join(directory, new_filename))
# 示例用法
replace_in_filenames('/path/to/directory', 'old_string', 'new_string')
2. 添加前綴和后綴
要在文件名前后添加前綴或后綴,可以使用字符串的拼接操作。
import os
def add_prefix_suffix(directory, prefix, suffix):
for filename in os.listdir(directory):
new_filename = prefix + filename + suffix
os.rename(os.path.join(directory, filename), os.path.join(directory, new_filename))
# 示例用法
add_prefix_suffix('/path/to/directory', 'prefix_', '_suffix')
使用glob模塊
glob模塊提供了更強(qiáng)大的文件匹配和查找功能,可以使用通配符來選擇文件。
1. 文件名匹配
要選擇符合特定模式的文件,可以使用glob.glob()函數(shù)。
import glob
files = glob.glob('/path/to/directory/*.txt') # 匹配所有以.txt結(jié)尾的文件
2. 批量重命名
結(jié)合glob和os模塊,可以輕松批量重命名文件。
import glob
import os
def rename_files(directory, pattern, new_name):
files = glob.glob(os.path.join(directory, pattern))
for old_file in files:
new_file = os.path.join(directory, new_name)
os.rename(old_file, new_file)
# 示例用法
rename_files('/path/to/directory', '*.txt', 'new_name.txt')
使用shutil模塊
shutil模塊提供了更多文件操作的功能,包括復(fù)制、移動(dòng)、刪除等。
1. 移動(dòng)文件并重命名
要將文件移動(dòng)到新的目錄并重命名,可以使用shutil.move()函數(shù)。
import shutil
def move_and_rename(source, destination):
shutil.move(source, destination)
# 示例用法
move_and_rename('/path/to/source/file.txt', '/path/to/destination/new_file.txt')
批量修改文件名的高級(jí)操作
在批量修改文件名的過程中,有時(shí)需要進(jìn)行更高級(jí)的操作,例如使用正則表達(dá)式匹配文件名,根據(jù)文件的元數(shù)據(jù)修改文件名等。下面將介紹一些高級(jí)操作。
1. 使用正則表達(dá)式匹配文件名
Python的re模塊允許你使用正則表達(dá)式來匹配文件名。這對(duì)于復(fù)雜的文件名操作非常有用。
import os
import re
def rename_with_regex(directory, pattern, replacement):
for filename in os.listdir(directory):
new_filename = re.sub(pattern, replacement, filename)
os.rename(os.path.join(directory, filename), os.path.join(directory, new_filename))
# 示例用法:將所有數(shù)字移動(dòng)到文件名末尾
rename_with_regex('/path/to/directory', r'(\d+)(.*)', r'\2\1')
2. 使用文件元數(shù)據(jù)修改文件名
有時(shí)需要根據(jù)文件的元數(shù)據(jù)來修改文件名,例如文件的創(chuàng)建日期、修改日期等。可以使用os.path.getctime()和os.path.getmtime()函數(shù)獲取文件的創(chuàng)建時(shí)間和修改時(shí)間。
import os
import datetime
def rename_with_metadata(directory):
for filename in os.listdir(directory):
filepath = os.path.join(directory, filename)
created_time = os.path.getctime(filepath)
modified_time = os.path.getmtime(filepath)
# 將時(shí)間戳轉(zhuǎn)換為日期字符串,例如:2023-01-15_12-30-45
created_date = datetime.datetime.fromtimestamp(created_time).strftime('%Y-%m-%d_%H-%M-%S')
modified_date = datetime.datetime.fromtimestamp(modified_time).strftime('%Y-%m-%d_%H-%M-%S')
new_filename = f"created_{created_date}_modified_{modified_date}.txt"
os.rename(filepath, os.path.join(directory, new_filename))
# 示例用法:根據(jù)文件的創(chuàng)建和修改時(shí)間修改文件名
rename_with_metadata('/path/to/directory')
3. 批量重命名文件夾中的文件
有時(shí)需要對(duì)文件夾中的所有子文件夾進(jìn)行批量操作,包括重命名子文件夾中的文件。
import os
def rename_files_in_subdirectories(directory, pattern, replacement):
for root, _, files in os.walk(directory):
for filename in files:
if re.search(pattern, filename):
new_filename = re.sub(pattern, replacement, filename)
os.rename(os.path.join(root, filename), os.path.join(root, new_filename))
# 示例用法:在所有子文件夾中批量修改文件名
rename_files_in_subdirectories('/path/to/parent_directory', r'pattern', r'replacement')
總結(jié)
在日常工作和項(xiàng)目中,批量修改文件名是一個(gè)常見的任務(wù),而Python提供了多種方法來簡化這一過程。本文詳細(xì)介紹了如何使用Python的不同模塊和技術(shù)來進(jìn)行文件名的批量修改,涵蓋了基本操作、高級(jí)操作以及文件夾中文件的操作。
首先,使用了os模塊和os.path模塊,展示了如何批量替換文件名中的特定字符串,以及如何添加前綴和后綴。這些操作適用于基本的文件名修改需求。其次,介紹了glob模塊,它使文件名的匹配和選擇變得更加靈活。通過結(jié)合glob和os模塊,可以輕松地批量重命名文件,更好地管理文件。
進(jìn)一步,探討了高級(jí)操作,包括使用正則表達(dá)式匹配文件名和根據(jù)文件的元數(shù)據(jù)來修改文件名。這些方法適用于處理復(fù)雜的文件名操作和根據(jù)文件屬性進(jìn)行批量重命名的情況。最后,還介紹了如何在子文件夾中批量修改文件名,以滿足更廣泛的需求,特別是在處理大量文件和目錄結(jié)構(gòu)時(shí)。
總之,Python為文件名批量修改任務(wù)提供了強(qiáng)大的工具和庫,使這一任務(wù)變得更加高效和靈活。選擇適合自己需求的方法,結(jié)合示例代碼,可以幫助大家更輕松地管理和組織文件,提高工作效率。
到此這篇關(guān)于Python批量修改文件名操作指南的文章就介紹到這了,更多相關(guān)Python批量修改文件名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用cx_Oracle模塊操作Oracle數(shù)據(jù)庫詳解
這篇文章主要介紹了Python使用cx_Oracle模塊操作Oracle數(shù)據(jù)庫,結(jié)合實(shí)例形式較為詳細(xì)的分析了cx_Oracle模塊的下載、安裝及針對(duì)Oracle數(shù)據(jù)庫的連接、執(zhí)行SQL語句、存儲(chǔ)過程等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
解決django中form表單設(shè)置action后無法回到原頁面的問題
這篇文章主要介紹了解決django中form表單設(shè)置action后無法回到原頁面的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
python3爬蟲中多線程的優(yōu)勢(shì)總結(jié)
在本篇文章里小編給大家分享了一篇關(guān)于python3爬蟲中多線程的優(yōu)勢(shì)總結(jié)內(nèi)容,需要的朋友們可以參考學(xué)習(xí)下。2020-11-11
python代碼實(shí)現(xiàn)掃碼關(guān)注公眾號(hào)登錄的實(shí)戰(zhàn)
本文主要介紹了python代碼實(shí)現(xiàn)掃碼關(guān)注公眾號(hào)登錄的實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
python?flappy?bird小游戲分步實(shí)現(xiàn)流程
哈嘍,哈嘍~今天小編又來分享小游戲了——flappy?bird(飛揚(yáng)的小鳥),這個(gè)游戲非常的經(jīng)典,游戲中玩家必須控制一只小鳥,跨越由各種不同長度水管所組成的障礙2022-02-02
python opencv鼠標(biāo)畫矩形框之cv2.rectangle()函數(shù)
鼠標(biāo)操作屬于用戶接口設(shè)計(jì),以前一直使用Qt來做,但是如果只需要簡單的鼠標(biāo),鍵盤操作,直接調(diào)用opencv庫的函數(shù)也未嘗不可,下面這篇文章主要給大家介紹了關(guān)于python opencv鼠標(biāo)畫矩形框cv2.rectangle()函數(shù)的相關(guān)資料,需要的朋友可以參考下2021-10-10
Python-OpenCV深度學(xué)習(xí)入門示例詳解
深度學(xué)習(xí)已經(jīng)成為機(jī)器學(xué)習(xí)中最受歡迎和發(fā)展最快的領(lǐng)域。深度學(xué)習(xí)的常見應(yīng)用包括語音識(shí)別、圖像識(shí)別、自然語言處理、推薦系統(tǒng)等等。本文將通過一些示例代碼,帶你詳細(xì)了解深入學(xué)習(xí)2021-12-12
python疲勞駕駛困倦低頭檢測(cè)功能的實(shí)現(xiàn)
這篇文章主要介紹了python疲勞駕駛困倦低頭檢測(cè),該系統(tǒng)可以檢測(cè)一個(gè)人在開車時(shí)是否困倦,及時(shí)提醒,做到安全隱患排查,對(duì)實(shí)現(xiàn)代碼感興趣的朋友一起看看吧2022-04-04

