1.项目要求
上千个文本文件,文件名包含美国风格的日期( MM-DD-YYYY),需要将它们改名为欧洲风格的日期( DD-MM-YYYY)
2.编程步骤
- 为美国风格日期创建一个正则表达式
- 用正则表达式去识别日期部分
- 构成新文件名,并对文件改名
3.代码演示
import re,os,shutil
#创建一个匹配美国风格日期的正则表达式
datePattern = re.compile(r'''
^(.*?) #匹配日期开始前的所有文本
((0|1)?\d)- #匹配月份
((0|1|2|3)?\d)- #匹配日期
((19|20)?\d) #匹配20世纪和21世纪的年份
(.*?)$
''',re.VERBOSE)
for amerFilename in os.listdir('.\\test'):
mo = datePattern.search(amerFilename)
#若名称不匹配则直接跳过该文件
if mo == None:
# print('不匹配')
continue
#符合规则将每一块信息保存到变量
# print(mo.group(1))
beforePart = mo.group(1)
monthPart = mo.group(2)
dayPart = mo.group(4)
yearPart = mo.group(6)
afterPart = mo.group(8)
#将欧洲名组合好赋给变量
euroFileName = beforePart + dayPart + '-'+ monthPart + '-' + yearPart + afterPart
#获取欧洲名和美国名的绝对路径
absFilename = os.path.abspath('.\\test')
amerFilename = os.path.join(absFilename,amerFilename)
euroFileName = os.path.join(absFilename,euroFileName)
#更名替换
shutil.move(amerFilename,euroFileName)