python實踐項目九:操作文件-修改文件名


描述:多個文件,文件名名包含美國風格的日期( 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!'

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM