使用python批量修改檔名

2021-10-13 03:10:31 字數 2052 閱讀 5335

在工作中有時候會遇到多個檔名格式不對的情況,需要一一修改,例如從test1.py,test2.py,…,testn.py改為test_1.py,test_2.py,…,test_n.py的情況,如果檔案數量少手動改改就算了,但是檔案多的話,就不想手動改了,我現在本著重複的事情盡量用**實現,就想著肯定可以通過python來批量修改的,然後就開始分析:

要批量修改檔名,首先得獲取所有的檔名

批量替換少部分檔名需要把想要的部分提取出來,然後拼接成新的檔名

實行檔名替換

按照這3步,首先要獲取所有的檔名,用到os.listdir()方法,不傳引數是獲取當前檔案路徑下的所有檔案和資料夾列表

import os

print

(os.listdir(

))

輸出結果:

d:\github\auto-repeat\.venv\scripts\python.exe d:/github/auto-repeat/replace_filename/main.py

['main.py', 'test1.py', 'test2.py', 'test3.py', '__init__.py']

本來我想的操作是通過for迴圈提出出帶test的檔案,然後通過「.」把testn和後面的py分開,然後用切片把test和後面的數字分開,最後再通過拼接字元的形式改為test_n.py的新檔名形式,但是今天寫的時候突然想到另乙個方法,那就是用想要替換的字元把檔名切開,然後通過用join方法用替換後的字元「test_n」將切開的列表拼接起來,這樣比較簡單

import os

print

(os.listdir())

file_list = os.listdir(

)for

file

in file_list:

if'test'

infile

:print

(file

.split(

'test'))

new_file =

'test_'

.join(

file

.split(

'test'))

print

(new_file)

輸出結果:

d:\github\auto-repeat\.venv\scripts\python.exe d:/github/auto-repeat/replace_filename/main.py

['main.py', 'test1.py', 'test2.py', 'test3.py', '__init__.py']

['', '1.py']

test_1.py

['', '2.py']

test_2.py

['', '3.py']

test_3.py

process finished with exit code 0

可以看到替換後的檔名已經被賦值到new_file變數了,剩餘最後一步就是替換檔名,用os.rename()方法將舊檔名和新檔名作為引數傳遞進去就可以了。

最終**如下:

import os

# 獲取當前資料夾下的所有檔案和資料夾列表

file_list = os.listdir(

)for

file

in file_list:

if'test'

infile

:# 用test_替換test

new_file =

'test_'

.join(

file

.split(

'test'))

# 檔名替換

os.rename(

file

, new_file)

有時修改還需要篩選只修改檔案

就用到os.path.isfile(file)

還有可能需要判斷檔案字尾

file.endswith(』.py』)

python批量修改檔名

修改前 flv檔案是從rar檔案中解壓出來的。由於英文不好,並且有的flv檔案的名字並不十分清晰明了,所以打算將flv檔案名字改為相應的rar檔案的名字。僅供參考,新手勿噴 主要使用了python中的re 正規表示式 和os模組中的函式。coding gb2312 import os import ...

python批量修改檔名

最近工作需要給大量檔案改名。恰巧,本人又在自學python,所以就想用python寫個程式來自動修改相應的檔名。下面就通過 來介紹一下我的做法吧。先說一下,我的工作要求是,在所有的資料檔案前加上資料所在資料夾的名字,改完名字後把所有的檔案彙總到乙個新的資料夾。我要處理的檔案有的存放在次最後層目錄 有...

Python 批量修改檔名

需要將收到的 bmp 檔案按名稱順序排列,而檔名本來的樣式類似於image12.bmp,現需要修改為12.bmp,由於檔案數量較大,所以產生了利用 python 修改的想法,雖然 很簡單,但還算成功。import os 檔案位址 path c users 迴圈處理資料夾內的每個檔案 forfile ...