问题描述:当前目录包含多个下级目录,且下级目录中各存一个.avi类型文件,每次访问需要点击到每个下级目录访问一个文件,操作麻烦,且不够直观,所以写了个脚本将各个下级目录下的avi文件统一复制到指定目录,直观展示和查阅。
问题截图
当前存在多个目录
![当前现状](https://img-blog.csdnimg.cn/2018110311161541.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWRvbmc5MTA5,size_16,color_FFFFFF,t_70)
每个目录里面都有部分相关格式的文件
逐一打开访问较麻烦,且不够直观 ![目录详情](https://img-blog.csdnimg.cn/20181103111735127.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWRvbmc5MTA5,size_16,color_FFFFFF,t_70)
脚本执行后文件整理结果
![执行脚本后结果](https://img-blog.csdnimg.cn/20181103144837590.png)
实现代码
# -*- coding: utf-8 -*-
'''
用途:
遍历某目录的下级目录,并查找指定类型文件,复制到上层文件夹
'''
import shutil,os
def get_dir(path,fileType):
'''
:param path: 路径
:param fileType: 需要复制的文件类型(.mkv或.avi等,前面需要加.)
:return:null
'''
#查看当前目录文件列表(包含文件夹)
allfilelist = os.listdir(path)
for file in allfilelist:
print(file,'\n')
filepath = os.path.join(path, file)
#判断是否是文件夹,如果是则继续遍历,否则打印信息
if os.path.isdir(filepath):
allfilelist2 = os.listdir(filepath)
for file2 in allfilelist2:
filepath3 = os.path.join(filepath, file2)
#判断文件是否以.avi结尾
if filepath3.endswith(fileType):
print('找到文件:'+filepath3)
#复制filepath3找到的文件到distPath目录
shutil.copy(filepath3, distPath)
else:
print('不是文件夹,继续查找...')
if __name__ == '__main__':
path = 'D:\\project\\demo'
#复制到distPath目录,目录需先创建
distPath = 'D:\\project\\demo\\distPath'
get_dir(path,'.avi')
|