一、通过文件后缀分类
识别文件的后缀名,将文件移动到对应文件后缀名的文件夹中。
使用Python自带的os和shutil模块。
原文件:
代码:
import os
from shutil import move
def collating_files(dir_path):
"""
整理目标文件夹下的文件,按照文件后缀分类
:param dir_path: 目标文件夹
:return:
"""
for filename in os.listdir(dir_path): # 遍历文件
file_path = dir_path + os.sep + filename # 文件/文件夹路径
if os.path.isfile(file_path): # 若是文件
# file_extension = filename.split('.')[-1]
file_extension = os.path.splitext(filename)[1] # 提取文件后缀
destination_directory = dir_path + os.sep + file_extension # 定义目标文件夹(命名为文件后缀)
if not os.path.exists(destination_directory): # 若目标文件夹不存在
os.makedirs(destination_directory) # 创建目标文件夹
move(file_path, destination_directory + os.sep + filename) # 将文件移动到目标文件夹
if __name__ == "__main__":
target_path = 'C:\\Users\\Administrator\\Desktop\\杂'
collating_files(target_path)
运行结果:
二、删除空文件夹
如果目录下存在许多空文件夹,我们依次找出并手动删除的话是相当繁琐的。
如上图所示的目录下,“新建文件夹” 就是一个空文件夹。
这里使用os.walk()方法和os.listdir()方法搜索并删除空文件夹,处理大量文件数据时就很方便了。
原目录结构:
代码:
def del_empty_dir(dir_path):
"""
删除目标文件夹下的空文件夹
:param dir_path:
:return:
"""
for root, dirs, files in os.walk(dir_path):
for d in dirs:
d_path = root + os.sep + d
if not os.listdir(d_path):
os.rmdir(d_path)
if __name__ == "__main__":
target_path = 'C:\\Users\\Administrator\\Desktop\\杂'
# collating_files(target_path)
del_empty_dir(target_path)
运行结果:
问题:
运行后发现还是有空文件夹“其它”,这是因为运行前“其它”下有一个空文件夹“其它-新建文件夹”。
再运行一次之后即可删除“其它”这个空文件夹了。