一、基本操作
Python中修改文件名稱可以使用os模塊中的rename()方法,該方法接收兩個參數:源文件名稱和新文件名稱。以下示例將文件名為「old_name」的文件修改為「new_name」:
import os
os.rename("./old_name", "./new_name")
需要注意的是,如果新文件名稱與已有文件的名稱相同,則會自動覆蓋舊文件。
二、批量修改
如果要批量修改某個文件夾中的文件名稱,我們可以使用循環遍歷並逐一修改每個文件的名稱。
以下示例將文件夾中所有的文件名後綴從「.txt」改為「.md」:
import os
dir_path = "./dir"
files = os.listdir(dir_path)
for filename in files:
portion = os.path.splitext(filename)
if portion[1] == ".txt":
newname = portion[0] + ".md"
os.rename(os.path.join(dir_path, filename), os.path.join(dir_path, newname))
首先我們獲取文件夾中所有文件名,然後使用splitext方法將文件名分為文件名和擴展名兩部分。
如果文件的擴展名為「.txt」,則我們將「.md」作為新擴展名來構造新的名稱。最後使用os模塊中的rename()方法,將舊名稱和新名稱合併,完成文件的修改。
三、添加日期後綴
我們可以使用datetime模塊獲取當前日期並添加到文件名的後綴中,以區分不同日期的文件。
以下示例將文件夾中的文件名稱添加當前日期(格式為「年-月-日」)後綴:
import os
import datetime
dir_path = "./dir"
files = os.listdir(dir_path)
for filename in files:
name, ext = os.path.splitext(filename)
today = datetime.date.today().strftime("-%Y-%m-%d")
newname = name + today + ext
os.rename(os.path.join(dir_path, filename), os.path.join(dir_path, newname))
首先,我們使用splitext將文件名分為文件名和擴展名兩部分,然後使用datetime模塊的today()方法獲取當前日期,並將其格式化為字元串。
接著,我們將日期字元串添加到文件名中,並使用os模塊中的rename()方法完成文件名稱的修改。
四、添加序號
我們也可以將文件名後面添加數字序號,以表示文件的不同版本。
以下示例將文件夾中的文件名稱添加遞增的數字後綴:
import os
dir_path = "./dir"
files = os.listdir(dir_path)
index = 1
for filename in files:
name, ext = os.path.splitext(filename)
newname = "{}_{}{}".format(name, index, ext)
index += 1
os.rename(os.path.join(dir_path, filename), os.path.join(dir_path, newname))
我們使用一個計數器index來生成遞增的數字,然後將數字拼接到文件名中。最後使用os模塊中的rename()方法完成文件名稱的修改。
五、文件名稱的安全性問題
文件名稱的安全性問題是一個不容忽視的問題。如果我們的代碼中存在漏洞,可能會導致文件名稱被修改為非法名稱,例如可執行文件、系統文件等。
針對這個問題,我們可以使用Python的pathlib模塊,它提供了一系列方法來保障文件名稱的安全性。
以下示例演示了如何使用pathlib模塊進行安全性檢查,並避免文件名稱被修改為非法名稱:
import os
import pathlib
dir_path = "./dir"
files = os.listdir(dir_path)
for filename in files:
name, ext = os.path.splitext(filename)
path = pathlib.Path(dir_path) / filename
if path.is_file() and path.suffix in {".txt", ".md", ".doc"}:
newname = name + "-new" + ext
path.rename(path.with_name(newname))
在此示例中,我們將文件名轉換為pathlib提供的Path對象,然後使用is_file()方法判斷該路徑是否為文件,並使用suffix屬性來檢查文件擴展名是否為可用的擴展名。這樣做可以避免文件名稱被修改為非法名稱。最後使用renmame()方法修改文件名稱,with_name()方法指定了新的名稱。
原創文章,作者:XYHFJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370184.html