描述:多個文件,文件名名包含美國風格的日期( MM-DD-YYYY),需要將它們改名為歐洲風格的日期( DD-MM-YYYY)
代碼1:先創建100個文件名為美國風格日期的文件(文件路徑為項目當前路徑下)
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 #先創建一百個文件名為美國風格日期的文件 4 import os,random 5 for num in range(100): 6 mm=random.randint(1,12) 7 dd=random.randint(1,31) 8 yy=random.randint(1900,2099) 9 #str.format(),字符串格式化的功能,通過 {} 和 : 來代替以前的 % 10 #{:0>2d}:數字補0 (填充左邊, 寬度為2) 11 #參考網址:https://www.runoob.com/python/att-string-format.html 12 date='{:0>2d}-{:0>2d}-{}'.format(mm,dd,yy) 13 #os.getcwd() 方法用於返回當前工作目錄 14 #在當前目錄下創建一個USdate路徑 15 filePath=os.getcwd()+'\\US\\' 16 if not os.path.exists(filePath): 17 os.mkdir(filePath) 18 #定義文件名 19 fileName='file'+'{:0>3d}'.format(num+1)+'-'+date+'-###'+'.txt' 20 #連接文件路徑和文件名 21 fileNameAndPath=filePath+fileName 22 # 根據文件名字符串創建文件 23 file=open(fileNameAndPath,'w') 24 file.write('Empty!') 25 print '%s is created' %fileNameAndPath 26 file.close() 27 print 'Done'
運行結果:
代碼2:復制US文件夾下所有文件到EU文件夾下(文件路徑為項目當前路徑下),並重命名所有文件
注意:若要重復執行此腳本,需先刪除第一次執行此腳本時創建的EU文件夾,否則會報錯:WindowsError: [Error 183]
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 #在執行此文件前需先執行create100File.py來創建100個文件 4 #若此腳本需重復執行,需先刪除第一次執行此腳本時創建的EUdate文件夾,否則會報錯:WindowsError: [Error 183] 5 #文件名包含美國風格的日期( MM-DD-YYYY), 6 # 需要將它們改名為歐洲風格的日期( DD-MM-YYYY) 7 import os,shutil,re 8 #創建一個識別美國日期的正則表達式 9 # . :默認匹配除\n之外的任意一個字符 10 # * :匹配*號前的字符0次或多次 11 # ?:匹配前一個字符1次或0次 12 # .*? :合起來可表達任意個字符 13 # re.VERBOSE:表示在正則表達式字符串中允許空白字符和注釋 14 #參考網址:https://www.cnblogs.com/zj-luxj/p/6901048.html 15 datePattern=re.compile( 16 r""" 17 ^(.*?) #日期前面的任意字符 group1 18 ((0|1)?\d)- #月份:以0或者1開頭的兩位正整數 group2、3 19 ((0|1|2|3)?\d)- #日期:以0或1或2或3開頭的兩位正整數 group4、5 20 ((19|20)\d\d) #年份:以19或20開頭的四位正整數 group6、7 21 (.*?)$ #日期后面的任意字符 group8 22 """,re.VERBOSE 23 ) 24 #os.listdir() 方法用於返回指定的文件夾包含的文件或文件夾的名字的列表 25 for oldFileName in os.listdir('.\US'): 26 # mo=datePattern.search(amerFileName) #與下面一行代碼實現的作用相同 27 #re.search 掃描整個字符串並返回第一個成功的匹配 28 date=re.search(datePattern,oldFileName) 29 #group():https://blog.csdn.net/weixin_43774516/article/details/88364761 30 beforePart=date.group(1) 31 monthPart=date.group(2) 32 dayPart=date.group(4) 33 yearPart=date.group(6) 34 afterPart=date.group(8) 35 #構成新文件名 36 newFileName=beforePart+dayPart+'-'+monthPart+'-'+yearPart+afterPart 37 #將USdate文件下所有文件復制到新創建的EUdate文件夾下並重命名 38 #os.path.abspath():返回path規范化的絕對路徑 39 oldDir=os.path.abspath('.')+'\\US\\' 40 newDir=os.path.abspath('.')+'\\EU\\' 41 if not os.path.exists(newDir): 42 os.mkdir(newDir) 43 #shutil.copy():將第一個參數的路徑下的文件復制到第二個參數的路徑下 44 shutil.copy(oldDir+oldFileName,newDir) 45 #os.rename():重命名函數,第一個參數為舊文件名,第二個為新文件名 46 os.rename(newDir+oldFileName,newDir+newFileName) 47 print oldFileName,'已重命名為:',newFileName 48 print 'Done!'
運行結果: