Python 批量修改檔名稱

2022-07-10 17:15:10 字數 1623 閱讀 8014

dr. he 最近忙著畢業**的事情,需要將一千多張超聲切面圖的檔名字尾名去掉,例如:剔除檔名"1802014223famfibai.jpg"的第11個字元至第18個字元」famfibai」,新檔名稱"1802014223.jpg"。看到他乙個個檔案重新命名,我也是「醉了」。雖然做自動化測試的,但是比較少直接用python寫指令碼,嘗試著解決他的需求。結合網友的分享的資料,寫下方法change_filename_substring(),以下**能解決

實際需求,適合初學者。不足之處,歡迎指出修正!

import os

import re

def change_filename_substring():

# path為批量檔案的資料夾的路徑

path = input("請輸入資料夾完整路徑(如c:/users/default/pictures):")

count = 0 # 重新命名的檔案數量

msg = ''

while '\\' in path or '/' not in path:

path = input("輸入的資料夾路徑有誤,請按規範重新輸入,退出請按』#『:")

if path == '#':

exit() # 退出程式

file_names = os.listdir(path) # 指定資料夾中的檔案列表

for name in file_names:

if len(name) == 22:

new_name = re.sub(name[10:18], '', name) # 以''替換檔名的第11至第18個字元,第乙個字元的索引是』0『

print("剔除當前檔名{}的第10個字元至第17個字元:{},檔案新名稱:{}\n".format(name, name[10:18], new_name))

os.chdir(path) # chdir => change_directory,切換到path目錄,方便直接rename

# try except 捕捉異常

try:

os.rename(name, new_name) # 用new_name重新命名檔案

except baseexception as except_msg: # 定義變數except_msg接收異常資訊

msg = except_msg

print(except_msg)

print("\n")

if msg == '':

count += 1 # 重新命名的檔案數量

new_file_names = os.listdir(path)

print("指定目錄包含的檔案數量:{},重新命名的條件:包括字尾名共22個字元,重新命名後與其他檔案不重名,符合條件的檔案數量:{}".format(len(file_names), count))

print("修改前的檔名列表:%s" % file_names)

print("修改後的檔名列表:{}".format(new_file_names))

print("\n任務完成!")

if __name__ == '__main__':

change_filename_substring()

python批量修改檔名稱

需求 將bak目錄下的所有test jpg檔案改為test jpg 例如 test 1 jpg檔案修改為test1.jpg usr bin python coding utf 8 import os import re movie name os.listdir bak for temp in mo...

python 批量修改檔名稱

1.第一步 該目錄下必須是一系列有規律的檔名稱,比如 說西遊記第一集,西遊就第二集等 這樣的檔名稱 2 第二步 然後要對檔案進行批量修改,那麼批量修改就是使用迴圈的方式對有規律的檔名稱進行修改 3 第三步 然後我們要拿到這個目錄檔案下的所有檔名稱,所有就要使用os模組下的 listdir 函式來獲取...

批量修改檔名稱(Python)

本程式功能 批量修改檔名稱 import os import re def replacedirname rootdir 修改rootdir路徑下的資料夾名 num 0 dirs os.listdir rootdir for dir in dirs print oldname is dir 輸出老的...