描述:多个文件,文件名名包含美国风格的日期( 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. jQuery中的text()、html()和val()以及javaScript中的innerText、innerHTML和value

    *jQuery中设置或者获取所选内容的值:text();设置或者获取所选元素的文本内容: html();设置或者获取所选元素的内容(包括html标记): val();设置或者获取表单字段的值(前提是表 ...

  2. screen对象及属性(availWidth、availHeight)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Parametric and Nonparametric Algorithms

    即参数化算法和非参数化算法. 参数化机器学习算法 可以大大简化学习过程,也可以限制可以学到的东西,将函数简化为已知形式的算法称为参数化机器学习算法.算法包括两个步骤: 为函数选择一个form. 从训练 ...

  4. 看图轻松理解数据结构与算法系列(NoSQL存储-LSM树) - 全文

    <看图轻松理解数据结构和算法>,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握.本系列包括各种堆.各种队列.各种列表.各种树.各种图.各种排序等等几十篇的样子. 关于LSM树 ...

  5. js傻瓜式制作电子时钟

    js傻瓜式制作电子时间 使用到的知识点 setInterval函数 构建函数new Date if判断 demo: //css样式请自行设置 <span id="timer" ...

  6. hibernate实现增删改查

    1.需要先创建学生实体: package pers.zhb.domain; public class Student { private int studentno; private String s ...

  7. 开源项目 04 PdfSharp

    using PdfSharp.Drawing; using PdfSharp.Pdf; using System; using System.Collections.Generic; using Sy ...

  8. 解决IE报错:Locale 'chinese' is not well-formed,或RangeError: 区域设置“chinese”的格式不正确的问题

    接之前的此博客问题处理:js处理时间时区问题 由于 toLocaleString():据本地时间格式,把 Date 对象转换为字符串.总是会带有上午/下午,所以我加了参数:new Date('2019 ...

  9. 【2019.11.13】SDN上机第3次作业

    参考资料:https://www.cnblogs.com/fjlinww/p/11834092.html 实验一 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1 ...

  10. RocketMq重复消费问题排查

    前情 出现了重复消费的问题,同一个消息被重复消费了多次,导致了用户端收到了多条重复的消息,最终排查发现,是因为消费者在处理消息的方法onMessage中有异常没有捕获到,导致异常上抛,被consume ...