描述:多个文件,文件名名包含美国风格的日期( MM-DD-YYYY),需要将它们改名为欧洲风格的日期( DD-MM-YYYY)

代码1:先创建100个文件名为美国风格日期的文件(文件路径为项目当前路径下)

 #!/usr/bin/python
# -*- coding: UTF-8 -*-
#先创建一百个文件名为美国风格日期的文件
import os,random
for num in range(100):
mm=random.randint(1,12)
dd=random.randint(1,31)
yy=random.randint(1900,2099)
#str.format(),字符串格式化的功能,通过 {} 和 : 来代替以前的 %
#{:0>2d}:数字补0 (填充左边, 宽度为2)
#参考网址:https://www.runoob.com/python/att-string-format.html
date='{:0>2d}-{:0>2d}-{}'.format(mm,dd,yy)
#os.getcwd() 方法用于返回当前工作目录
#在当前目录下创建一个USdate路径
filePath=os.getcwd()+'\\US\\'
if not os.path.exists(filePath):
os.mkdir(filePath)
#定义文件名
fileName='file'+'{:0>3d}'.format(num+1)+'-'+date+'-###'+'.txt'
#连接文件路径和文件名
fileNameAndPath=filePath+fileName
# 根据文件名字符串创建文件
file=open(fileNameAndPath,'w')
file.write('Empty!')
print '%s is created' %fileNameAndPath
file.close()
print 'Done'

运行结果:

代码2:复制US文件夹下所有文件到EU文件夹下(文件路径为项目当前路径下),并重命名所有文件

注意:若要重复执行此脚本,需先删除第一次执行此脚本时创建的EU文件夹,否则会报错:WindowsError: [Error 183]

 #!/usr/bin/python
# -*- coding: UTF-8 -*-
#在执行此文件前需先执行create100File.py来创建100个文件
#若此脚本需重复执行,需先删除第一次执行此脚本时创建的EUdate文件夹,否则会报错:WindowsError: [Error 183]
#文件名包含美国风格的日期( MM-DD-YYYY),
# 需要将它们改名为欧洲风格的日期( DD-MM-YYYY)
import os,shutil,re
#创建一个识别美国日期的正则表达式
# . :默认匹配除\n之外的任意一个字符
# * :匹配*号前的字符0次或多次
# ?:匹配前一个字符1次或0次
# .*? :合起来可表达任意个字符
# re.VERBOSE:表示在正则表达式字符串中允许空白字符和注释
#参考网址:https://www.cnblogs.com/zj-luxj/p/6901048.html
datePattern=re.compile(
r"""
^(.*?) #日期前面的任意字符 group1
((0|1)?\d)- #月份:以0或者1开头的两位正整数 group2、3
((0|1|2|3)?\d)- #日期:以0或1或2或3开头的两位正整数 group4、5
((19|20)\d\d) #年份:以19或20开头的四位正整数 group6、7
(.*?)$ #日期后面的任意字符 group8
""",re.VERBOSE
)
#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
for oldFileName in os.listdir('.\US'):
# mo=datePattern.search(amerFileName) #与下面一行代码实现的作用相同
#re.search 扫描整个字符串并返回第一个成功的匹配
date=re.search(datePattern,oldFileName)
#group():https://blog.csdn.net/weixin_43774516/article/details/88364761
beforePart=date.group(1)
monthPart=date.group(2)
dayPart=date.group(4)
yearPart=date.group(6)
afterPart=date.group(8)
#构成新文件名
newFileName=beforePart+dayPart+'-'+monthPart+'-'+yearPart+afterPart
#将USdate文件下所有文件复制到新创建的EUdate文件夹下并重命名
#os.path.abspath():返回path规范化的绝对路径
oldDir=os.path.abspath('.')+'\\US\\'
newDir=os.path.abspath('.')+'\\EU\\'
if not os.path.exists(newDir):
os.mkdir(newDir)
#shutil.copy():将第一个参数的路径下的文件复制到第二个参数的路径下
shutil.copy(oldDir+oldFileName,newDir)
#os.rename():重命名函数,第一个参数为旧文件名,第二个为新文件名
os.rename(newDir+oldFileName,newDir+newFileName)
print oldFileName,'已重命名为:',newFileName
print 'Done!'

运行结果:

python实践项目九:操作文件-修改文件名的更多相关文章

  1. python第二十九课——文件读写(复制文件)

    自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest): #1.打开两个文件:1个关联读操作,1个关联写操作 fr=open(src,'rb ...

  2. python第二十九课——文件读写(读取读取中文字符)

    演示:读取中文字符 结论: 1).如果不设置encoding,默认使用gbk进行编解码 2).如果编码和解码不一致,最终导致报错,但是一旦设置了errors='ingore',那么就不会报错,而采取乱 ...

  3. python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件

    描述:将指定路径下的某文件夹备份到一个zip文件 代码: #!/usr/bin/python # -*- coding: UTF-8 -*- # backupToZip - Copies an ent ...

  4. python中OS模块操作文件和目录

    在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...

  5. Python实践练习:将一个文件夹备份到一个 ZIP 文件

    题目 项目要求:假定你正在做一个项目,它的文件保存在 C:\AlsPythonBook 文件夹中.你担心工作会丢失, 所以希望为整个文件夹创建一个 ZIP 文件, 作为"快照" . ...

  6. python实践项目1

    python #南昌理工学院人工智能学院实验室 WORKSHOP 实践项目 import time print('welcome to our WORKSHOP') print('.......... ...

  7. Python实践项目2

    #南昌理工学院人工智能学院实验室WORKSHOP实践项目 import time import random SCRIPT_NPC_SCHOOL_SISTER = ['你好!', '你好!', '你是 ...

  8. python实践项目八:生成随机试卷文件

    描述:匹配美国50个州的首府. 下面是程序需要完成的任务: • 创建35 份不同的测验试卷. • 为每份试卷创建50 个多重选择题,次序随机. • 为每个问题提供一个正确答案和3 个随机的错误答案,次 ...

  9. python第二十九课——文件读写(写数据的操作)

    演示写数据的操作: 结论:往文件中写入数据,如果文件不存在,先创建文件,再写入内容 #1.打开文件 fw=open(r'd.txt','w',encoding='utf-8') #2.写数据操作 fw ...

随机推荐

  1. Python的可变类型和不可变类型?

    Python的每个对象都分为可变和不可变可变:列表.字典   不可变:数字.字符串.元组

  2. Chirp信号及其生成

    Chirp信号是一个典型的非平稳信号,在通信.声纳.雷达等领域具有广泛的应用. 简介 Chirp译名:啁啾(读音:“周纠”),是通信技术有关编码脉冲技术中的一种术语,是指对脉冲进行编码时,其载频在脉冲 ...

  3. 小程序支付及H5支付前端代码小结

    小程序支付和H5支付前端都不需要引入其他的js , 只需要后台将相关的参数 ( timeStamp: '', nonceStr: '', package: '', signType: 'MD5', p ...

  4. 浏览器事件循环 & nodejs事件循环

    第1篇:如何理解EventLoop——宏任务和微任务篇 宏任务(MacroTask)引入 在 JS 中,大部分的任务都是在主线程上执行,常见的任务有: 渲染事件 用户交互事件 js脚本执行 网络请求. ...

  5. [BZOJ1191]超级英雄Hero

    Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的 多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选手正确 ...

  6. mysql 创建主键,修改主键

    //添加一个字段pid并且设置为主键(auto_increment)自增(auto_increment),不可为null,类型为int unsigned alter table table1 add ...

  7. CF830E Perpetual Motion Machine

    题面 题解 神仙构造题. 分五种情况考虑: 如果存在一个环,那么令环上的点权值为\(1\),其余点权值为\(0\). 如果存在一个度数大于\(3\)的点,令这个点的权值为\(2\),和它相邻的点权值为 ...

  8. 如果要对img里面的值做特殊处理,可以直接写方法

    html <img :src="getMore('up')" alt=""> data里面定义的 one: 'http://p1.fishqc.ne ...

  9. NIO Channel Scatter/Gather 管道Pipe类

    通道提供了一种被称为Scatter/Gather的重要新功能(有时也被称为矢量I/O).Scatter/Gather是一个简单却强大的概念,它是指在多个缓冲区上实现一个简单的I/O操作.对于一个wri ...

  10. java正则表达式备忘

    最近框架和爬虫上常要处理字符串匹配和替换的场景,备忘. 非贪婪模式 比如要匹配html文本中的连接,例如a href="www.abc.com/xyz/o"需要替换为a href= ...