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 輸出老的...