shutil模块(shell工具)--python复制、移动、改名和删除文件

上一篇 / 下一篇  2017-09-06 10:06:38 / 个人分类:python

前提
用import shutil导入模块

常用命令:
1)shutil.rmtree()——如果要递归删除G:\test 目录的内容,可使用shutil.rmtree()函数
例如:
shutil.rmtree(_code_online+'/moxian_m2')
2)shutil.copy(source,destination)------复制单个文件。如果文件存在,则会覆盖文件。
3)shutil.copytree(source,destination)------复制路径下所有文件夹和文件。如果文件存在,则会报错
4)shutil.move(source,destination)------移动文件与改名
5)shutil.rmdir(path)------永久删除路径下所有文件和文件夹
6)import send3Strash pip installl send3trash send2trash.send2trash(source)------安全删除(删除时,文件会发生到回收站)
练习代码1
#-*- coding:utf-8 -*-
importshutil,os,send2trash
#TODO:复制文件和文件夹
# os.chdir('d:\\testPython') #改变当前文件路径,此语句不写也不会报错
# shutil.copy('d:\\testPython\\huanhuan.txt','d:\\testPython2') #复制文件到指定路径。此处地址需为完整地址。如果文件在新地址存在,会直接覆盖文件
# shutil.copytree('d:\\testPython','d:\\testPython4') #复制文件夹下所有文件到指定路径,指定路径必须为新文件夹,否则报错

#TODO: 文件和文件夹的移动和改名
#TODO: shutil.move(source,destination)
# shutil.move('d:\\testPython\\huanhuan1.txt','d:\\testPython2') #移动(剪切)文件到指定路径。移入的目录必须存在,且移动的文件必须在新地址不存在,否则报错
# shutil.move('d:\\testPython\\huanhuan.txt','d:\\testPython2\huanhuan.txt') #移动(剪切)文件到指定文件夹,并替换指定的文件。此时文件在移出,移入地址可名称一致。
# shutil.move('d:\\testPython','d:\\testPython2') #移动文件夹到指定文件夹下 。移入、移出的文件夹都必须存在,且移入文件夹不能已存在移出文件夹

#TODO: 永久删除文件或文件夹(不会发送到回收站,直接释放磁盘空间)
# os.rmdir('d:\\testPython') #删除空文件夹。文件夹下必须为空,且文件夹必须存在
# os.unlink('d:\\testPython2\huanhuan.txt') #删除文件。文件必须存在
# shutil.rmtree('d:\\testPython2') #删除文件夹及文件夹下所有文件。路径必须存在

#TODO: send2trash 模块安全地删除
# send2trash.send2trash('d:\\testPython')

练习代码2
#-*- coding:utf-8 -*-
importre,shutil,os
#TODO: 查找文件的正则表达式
##分组规则:先外括号全部内容为一组,再内括号为一组。一组括号一个分组。
#正则表达式1
# datePattern=re.compile(r'''(^(.*?) #分组1 为(.*?)((0|1)?\d)-((0|1|2|3)?\d)-((19|20)\d\d)(.*?)$,分组2为^(.*?)
# ((0|1)?\d)- #美国日期格式(MM-DD-YYYY) 月份 分组3为((0|1)?\d),分组4为(0|1)?
# ((0|1|2|3)?\d)- #日期
# ((19|20)\d\d) #年份
# (.*?)$)
# ''',re.VERBOSE)
#正则表达式2
datePattern=re.compile(r'''^(.*?)
((0|1)?\d)- #美国日期格式(MM-DD-YYYY) 月份
((0|1|2|3)?\d)- #日期
((19|20)\d\d) #年份
(.*?)$
''',re.VERBOSE)#re.VERBOSE 为正则内允许注释

# myTest=datePattern.search('www8-1-1991sdd.txt')
# print myTest
#TODO: 查找文件并识别日期
os.chdir('D:\\delicious')
foramerFilenameinos.listdir('D:\\delicious'):#os.listdir循环文件夹下所有文件和文件夹
printamerFilename
mo=datePattern.search(amerFilename)
# mo=datePattern.search('q08-31-1991.txt')
printmo
#忽略无日期的文件
ifmo==None:
continue
#获取文件名称中日志的不同部分,对应正则表达式1
# allGrous=mo.groups(1)
# print 'allGroups---------:',allGrous
# beforePart=mo.group(2)
# print 'beforPart:',beforePart
# monthPart=mo.group(3)
# print 'monthPart:',monthPart
# dayPart=mo.group(5)
# print 'dayPart:',dayPart
# yearPart=mo.group(7)
# print 'yearPart:',yearPart
# aferPart=mo.group(9)
# print 'afterPart:', aferPart

# 获取文件名称中日志的不同部分,对应正则表达式2
allGrous = mo.groups(1)
print'allGroups---------:', allGrous
beforePart = mo.group(1)
print'beforPart:', beforePart
monthPart = mo.group(2)
print'monthPart:', monthPart
dayPart = mo.group(4)
print'dayPart:', dayPart
yearPart = mo.group(6)
print'yearPart:', yearPart
aferPart = mo.group(8)
print'afterPart:', aferPart

#TODO: 构成新文件名,并改名
euroFilename=str(beforePart)+str(dayPart)+'-'+str(monthPart)+'-'+str(yearPart)+str(aferPart)#拼接欧洲日期
print'euroFilename-------------------------:',euroFilename
absWorkingDir=os.path.abspath('D:\\delicious')
amerFilename=os.path.join(absWorkingDir,amerFilename)
euroFilename=os.path.join(absWorkingDir,euroFilename)
#重命名
print('Renaming "%s" to "%s" ...'%(amerFilename,euroFilename))
# shutil.move(amerFilename,euroFilename)
print'change:',amerFilename


TAG:

 

评分:0

我来说两句

Open Toolbar