代码背景:
最近老看视频教程,我需要知道一部教程,需要多久能看完。win下文件夹里,多选视频文件,可以直接在属性中查看一共需要的时间。不过在网上下载的很多视频教程每一章都分布在不同的文件夹下,无法快捷查看所有视频文件的时间。要是把这些视频文件,全部放到一个目录下,就好了。于是写了下面的代码:
import re
import os
import time
import shutil
import datetime
def copyFileToOne(pathFrom,pathTo):
'''
递归遍历pathFrom目录,将里面所有的文件,拷贝到pathTo目录下
:param pathFrom:
:param pathTo:
:return:
'''
print('进入目录' + pathFrom)
#假如不存在,创建目标文件夹
if not os.path.exists(pathTo):
os.mkdir(pathTo)
# 当此为文件目录时:
if os.path.isdir(pathFrom):
filelist = os.listdir(pathFrom)
for item in filelist:
item = pathFrom+os.path.sep+item
if item == pathTo:
continue
elif os.path.isdir(item):
copyFileToOne(item, pathTo)
else:
print('复制文件:' + item)
print('复制开始...............#begin')
begintime = datetime.datetime.now()
shutil.copy(item,pathTo)
endtime = datetime.datetime.now()
copytime = (endtime-begintime).seconds
print('复制结束...............#end')
print('复制用时(秒)...............#%d' % (copytime,))
print('...................................')
if __name__=='__main__':
copyFileToOne(os.getcwd(),'O:\\test\\all')
注意点:
所有的路径,全部使用绝对路径
python中对文件、文件夹的操作需要涉及到os模块和shutil模块。
创建文件:
1) os.mknod("test.txt") 创建空文件
2) open("test.txt",w) 直接打开一个文件,如果文件不存在则创建文件
创建目录:
os.mkdir("file") 创建目录
创建多层新目录:
### 创建多层目录
def mkdirs(path):
# 去除首位空格
path=path.strip()
# 去除尾部 \ 符号
path=path.rstrip("\\")
# 判断路径是否存在
# 存在 True
# 不存在 False
isExists=os.path.exists(path)
# 判断结果
if not isExists:
# 创建目录操作函数
os.makedirs(path)
# 如果不存在则创建目录
print path + u' 创建成功'
return True
else:
# 如果目录存在则不创建,并提示目录已存在
print path + u' 目录已存在'
return False
复制文件:
shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
复制文件夹:
shutil.copytree("olddir","newdir") olddir和newdir都只能是目录,且newdir必须不存在
重命名文件(目录)
os.rename("oldname","newname") 文件或目录都是使用这条命令
移动文件(目录)
shutil.move("oldpos","newpos")
删除文件
os.remove("file")
删除目录
os.rmdir("dir") 只能删除空目录
shutil.rmtree("dir") 空目录、有内容的目录都可以删
转换目录
os.chdir("path") 换路径
判断目标
os.path.exists("goal") 判断目标是否存在
os.path.isdir("goal") 判断目标是否目录
os.path.isfile("goal") 判断目标是否文件 备注:若路径中含中文,在windows环境(编码为GBK)下,要将目录编码成GBK,如:dir.encode('GBK')