• 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 # . :默认匹配除
    之外的任意一个字符
    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)dd)    #年份:以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!'

    运行结果:

  • 相关阅读:
    【CodeForces】[612C]Replace To Make Regular Bracket Sequence
    【POJ】[1363]Rails
    【POJ】[1363]Rails
    【杭电】[1022]Train Problem I
    【杭电】[1022]Train Problem I
    【杭电】[1873]看病要排队
    【杭电】[1873]看病要排队
    【HPU】[1714]感恩节KK专场——送给新生的礼物
    【HPU】[1714]感恩节KK专场——送给新生的礼物
    [leetcode]392. Is Subsequence 验证子序列
  • 原文地址:https://www.cnblogs.com/heyangblog/p/11159351.html
Copyright © 2020-2023  润新知