利用python写一个文件分类程序

起因与介绍

先声明一下,我之前是没学过python的,这个脚本是因为我的npy在实习,但是她不会python所以我就用了一个小时按照网上的函数介绍写了这个脚本。所以有些地方可能写的不太好,请见谅。

代码功能

在这里插入图片描述
如图,现在有前缀为NOX的文件若干,想将其按照前缀分开且后缀名BIN和其他后缀名的文件也要分开,处理后放在classified文件夹下,处理后classified文件夹内容如图
在这里插入图片描述

代码及注释

import os
import shutil


def func():
    i = 0
    n = 0
    fileDir: str = os.getcwd()  # 获取当前工作文件夹
    if not os.path.exists(fileDir + '\\' + "classified"):
        os.mkdir(fileDir + '\\' + "classified")  # 判断工作文件夹下是否有classified文件夹若没有则创建
    for root, dirs, files in os.walk(fileDir):
        for name in files:  # 遍历工作文件夹下所有文件
            while name[i] not in ['-', '_', '——', '.']:
                i = i + 1
            if name[i] not in ['.']:
                na = name[0:i]  # 获取文件名下划线之前的部分
                if os.path.splitext(name)[-1][1:] in ["bin", "BIN"]:  # 若后缀为bin则将文件放入 NOX_BIN 文件夹下
                    if not os.path.exists(fileDir + '\\' + "classified" + '\\' + na + '_BIN'):
                        os.mkdir(fileDir + '\\' + "classified" + '\\' + na + '_BIN')
                    shutil.copyfile(fileDir + '\\' + name,
                                    fileDir + '\\' + "classified" + '\\' + na + '_BIN' + '\\' + name)
                    print("已将文件" + fileDir + '\\' + name + "移动至" + fileDir + '\\' + "classified" + '\\' + na + '_BIN')
                    n = n + 1  # 统计处理的文件个数
                else:
                    if not os.path.exists(fileDir + '\\' + "classified" + '\\' + na):  # 若后缀不为bin则将文件放入 NOX_BIN 文件夹下
                        os.mkdir(fileDir + '\\' + "classified" + '\\' + na)
                    shutil.copyfile(fileDir + '\\' + name, fileDir + '\\' + "classified" + '\\' + na + '\\' + name)
                    print("已将文件" + fileDir + '\\' + name + "移动至" + fileDir + '\\' + "classified" + '\\' + na)
                    n = n + 1  # 统计处理的文件个数
            i = 0
    print('共移动{:d}个文件'.format(n))
    input('回车退出')  # 防止控制台自动关闭


if __name__ == "__main__":
    func()

代码内存在的问题

因为npy那边只要求win下环境所以没做跨平台,如果需要跨平台的话需要os.sep函数,另外因为需要处理的文件中不存在没有后缀名的文件所以没做处理,如果遇到无后缀文件会报错,需更改
while name[i] not in [‘-’, ‘_’, ‘——’, ‘.’]:
i = i + 1
处进行文件名结束判断

同名文章也已发布至博客 利用python写一个文件分类程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值