標籤:
1 #! /usr/bin/env python 2 #coding=gbk 3 #檔案操作執行個體--將檔案夾下所有圖片名稱加上‘_test‘ 4 import re,os,time 5 #str.split(path) 分割字串 6 #‘串連符‘.join(list)將列表組成字串 7 8 def change_name(path): 9 global i #這裡要定義在函數裡面,定義在外面會報錯10 #判斷路徑是否是檔案或者目錄,如果不是,返回錯誤11 if not os.path.isdir(path) and not os.path.isfile(path):12 return false13 if os.path.isfile(path):14 file_path=os.path.split(path)#分解檔案路徑組成list存入file_path15 lists=file_path[1].split(‘.‘)#分割檔案與副檔名16 file_ext=lists[-1]#取出尾碼名 等價於:file_ext=lists[1],list只有兩個數17 img_ext=[‘bmg‘,‘jpeg‘,‘gif‘,‘psd‘,‘png‘,‘jpg‘]#圖片尾碼名18 if file_ext in img_ext:19 #這裡將新檔案路徑組成,改名的話就將list[0]替換掉20 os.rename(path,file_path[0]+‘/‘+lists[0]+‘_test.‘+file_ext)21 i=i+122 elif os.path.isdir(path):23 for x in os.listdir(path):24 #通過join將檔案添加到目錄後面組成檔案25 change_name(os.path.join(path,x))#os.path.join()在路徑處理上很有用26 os.chdir("g:/檔案操作")27 img_dir = ‘g:\\檔案操作\\圖片1‘28 img_dir = img_dir.replace(‘\\‘,‘/‘)29 i=030 start=time.time()#開始時間31 change_name(img_dir)32 c=time.time()-start#計算消耗時間33 print(‘共處理了%s張圖片‘%(i))34 print (‘程式運行耗時:%0.2f‘%(c))
這裡如果將global i 定義在函數外面,啟動並執行時候會報錯:local variable ‘i‘ referenced before assignment。這個錯誤的意思就是變數i在引用前沒有定義,但是在最開始已經定義了的,通過global關鍵字引用全域變數來解決問題。在python的函數中和全域同名的變數,如果你有修改變數的值就會變成局部變數,在修改之前對該變數的引用自然就會出現沒定義這樣的錯誤了,如果確定要引用全域變數,並且要對它修改,必須加上global關鍵字。
python檔案_批量改名