python整理归类文件夹下不同拓展名文件

1、场景

有时候文件夹下的文件可能比较杂乱,而我们希望可以通过文件后缀的形式将文件进行归类。面临的场景如下图。那么我们这个时候就有两种解决办法,1、采用右键按照文件类别排序,2、整体归并整理。

右键排序可能会导致整个的序列仍然很长,再文件数量较大时使用起来可能并不方便。介于所学技术,解决所遇问题的思路,本文采用python实现。

2、实现思路

处理思路较为简单:

1、遍历整个文件夹,寻找所有的文件

2、寻找整个文件夹中的拓展名类别,并放入到列表

3、建立文件夹、并移动文件到文件夹内

处理bug
1、部分文件不存在后缀

3、代码实现

import os

# train_dir = input("请输入要整理的文件夹:")
train_dir = "C:"
file_types = []
file_list = []

# 遍历文件夹,排除文件夹,建立为文件
for i in os.listdir(train_dir):  # 遍历整个文件夹
    path = os.path.join(train_dir, i)
    if os.path.isfile(path):  # 判断是否为一个文件,排除文件夹
        file_list.append(i)
print(file_list)

# 全部后缀整理为file_types
for data_name in file_list:
    file_types.append(os.path.splitext(data_name)[1][1:])  # 目录下所有文件的后缀
file_types = list(set(file_types))
file_types = ["其他文件" if x == "" else x for x in file_types]
try:
    file_list.remove("ini")
except ValueError as e:
    print("本文件夹不存在超链接,无需删除")

print(file_types)


# 在原定的目录下,创建同名文件夹
new_dir = train_dir + "\\" + "文件整理"
if os.path.exists(new_dir) == 0:
    os.mkdir(new_dir)
for file_type in file_types:
    # 以文件类型创建同名的文件夹
    if os.path.exists(new_dir + "\\" + file_type):
        print(file_type + "文件夹已存在")
    else:
        os.mkdir(new_dir + "\\" + file_type)

for file_type in file_types:
    for file_name in file_list:
        # 判断当前文件是不是该文件类型
        if file_name.endswith("." + file_type):
            try:
                os.rename(train_dir + "\\" + file_name, new_dir + "\\" + file_type + "\\" + file_name)
            except PermissionError as e:
                print(train_dir + "\\" + file_name + "正在使用")

for data_name in file_list:
    if os.path.splitext(data_name)[1][1:] == "":
        try:
            os.rename(train_dir + "\\" + file_name, new_dir + "\\" + "其他文件" + "\\" + file_name)
        except PermissionError as e:
            print(train_dir + "\\" + file_name + "正在使用")

print(train_dir + "文件夹文件归档完毕")

 4、运行结果

文件目录为  运行目录->文件整理->各类别文件

 5、可供改进的点

1、文件名可以输入,而修改代码实现

2、可以做QT界面,便于使用

3、文件的归类不够人性化,比如jpg和jpeg都是图片,差别不大

4、谨慎使用,防止将不必要的文件进行移动,如:项目文件。

5、欢迎指正

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值