一、前言
最近手机存储空间不够使了,打开设置发现照片占了
7~8G
,于是就想着将照片备份到电脑上;
将手机连接到电脑上的那一刻,打开DCIM
文件夹一看,里面好多如下图的文件夹;
但是我想把这些文件夹里面的 照片、视频 等文件全部保存到一个文件夹,怎么快速简单的实现呢?
下面我们一起来看一下,怎么用 Python 代码来处理这些文件!!!
好文章 记得收藏+点赞+关注额 !!!---- Nick.Peng
二、Python实现快速整理文件
-
直接上代码,步骤就不一一解释了,有注释,自己看。。。
-
实现代码如下:
# -*- coding: utf-8 -*- # @Author: Nick # @Date: 2019-12-26 14:38:43 # @Last Modified by: Nick # @Last Modified time: 2019-12-26 14:42:22 # @usagePrecise: 遍历指定目录的下级目录,并查找指定类型文件,复制到上层指定文件夹内 import shutil import os import re def get_file_type(path, sort_folder_name): """ 获取所有文件类型 :param path: :param sort_folder_name: :return: tuple ==> ('.JPG', '.jpg', '.MOV', '.mp4', '.PNG', '.AAE') """ # 查看当前path路径下所有的文件和文件夹(排除整理后的文件夹) all_folder_list = [i for i in os.listdir(path) if not i == sort_folder_name] file_type_list = [] for folder in all_folder_list: if not os.path.isdir(folder): continue folder_path = os.path.join(path, folder) all_file_list = os.listdir(folder_path) for i in all_file_list: file_type = re.findall(r"\..*", i)[0] if re.findall(r"\..*", i) else file_type_list[0] if file_type not in file_type_list: file_type_list.append(file_type) return tuple(file_type_list) def sort_dir(path, file_type, sort_folder_name): """ 整理file_type的所有文件到指定目录sort_folder_name :param path: 路径 :param file_type: 需要整理的文件类型(.JPG或.MOV等) :return: None """ sort_folder_path = os.path.join(path, sort_folder_name) # 如果目录不存在, 就新建 if not os.path.exists(sort_folder_path): os.makedirs(sort_folder_path) # 查看当前path路径下所有的文件和文件夹(排除整理后的文件夹) all_folder_list = [i for i in os.listdir(path) if not i == sort_folder_name] file_count = 0 jump_file = [] for folder in all_folder_list: # 过滤文件,只处理文件夹 if not os.path.isdir(folder): continue print('\n', "======正在整理的文件夹:{}======".format(folder)) # 拼接待整理目录完整路径 folder_path = os.path.join(path, folder) # 返回待整理路径下所有的文件的名字,文件夹除外 all_file_list = [i for i in os.listdir(folder_path) if not os.path.isdir(i)] for file in all_file_list: file_path = os.path.join(folder_path, file) # 整理指定后缀的文件 if file_path.endswith(file_type): # 如果文件在sort_folder里已存在,跳过 if os.path.exists(os.path.join(path, sort_folder_name, file)): print('\n', "文件:{} 已存在......跳过......".format(file)) jump_file.append(file) else: file_count += 1 print('正在复制第 {} 个文件:{}'.format(file_count, file_path)) # 复制file_path找到所有符合条件的文件到sort_folder_name目录 shutil.copy(file_path, sort_folder_name) if jump_file: print('\n', "********** 跳过文件明细如下:\n{}".format(jump_file)) print('\n', "********** 整理完毕,此次共整理 {} 个文件,跳过 {} 个文件 **********".format(file_count, len(jump_file))) if __name__ == '__main__': # 待整理文件夹的父目录路径 sort_path = 'F:\\相册\\2019.12.25' # 整理后的文件夹名字 sort_folder_name = "sort_folder" file_type_list = get_file_type(sort_path, sort_folder_name) sort_dir(sort_path, file_type_list, sort_folder_name)
-
整理完成后,打印整理结果:
======正在整理的文件夹:101APPLE====== ............ ............ ********** 跳过文件明细如下: [xxxxxx.JPG] ********** 整理完毕,此次共整理 668 个文件,跳过 1 个文件 **********
好文章 记得收藏+点赞+关注额 !!!