分享

Python自动化整理文件“大升级”,任意路径下文件,都给你整理的明明白白!

 liqualife 2020-12-26

作者:Huny


https://www.cnblogs.com/huny/p/14146719.html

大家好,我是为大家分享“干货”和“黑科技”的黄同学!

1. 前言

工作上的文档和资料好几个月没整理了,因为平常太忙都是随手往桌面丢。整个桌面杂乱无章全是文档和资料。几乎快占满整个屏幕了,所有我必须要整理一下了。但是手动整理太费时间了,于是我想到了python。
但是这几个模块,我很早就给大家讲述过了,这里就不再做过多的解释了,大家可以参考下面之前写的文章进行学习,而这里就直接上代码了。
os模块使用详解
shutil模块使用详解
glob模块使用详解

2. 基础版

import os
import glob
import shutil

'''
@Author: huny
@date:  2020.12.06
@function:  桌面整理
'''


class FileType():
    def __init__(self):
        self.filetype = {
            '图片': ['.jpeg', '.jpg', '.tiff', '.gif', '.bmp', '.png', '.bpg', 'svg', '.heif', '.psd'],
            '视频': ['.avi', '.flv', '.wmv', '.mov', '.mp4', '.webm', '.vob', '.mng', '.qt', '.mpg', '.mpeg', '.3gp', '.mkv'],
            '音频': ['.aac', '.aa', '.aac', '.dvf', '.m4a', '.m4b', '.m4p', '.mp3', '.msv', '.ogg', '.oga', '.raw', '.vox', '.wav', '.wma'],
            '文档': ['.oxps', '.epub', '.pages', '.docx', '.doc', '.fdf', '.ods', '.odt', '.pwi', '.xsn', '.xps', '.dotx', '.docm', '.dox',
'.rvg', '.rtf', '.rtfd', '.wpd', '.xls', '.xlsx', '.ppt', '.pptx', '.csv', '.pdf', '.md','.xmind'],
            '压缩文件': ['.a', '.ar', '.cpio', '.iso', '.tar', '.gz', '.rz', '.7z', '.dmg', '.rar', '.xar', '.zip'],
            '文本': ['.txt', '.in', '.out','.json','.xml','.log'],
            '程序脚本': ['.py', '.html5', '.html', '.htm', '.xhtml',s'.c', '.cpp', '.java', '.css','.sql'], 
            '可执行程序': ['.exe','.bat', '.lnk'],
            '字体文件': ['.ttf', '.OTF', '.WOFF', '.EOT']
        }

    def JudgeFile(self, pathname):
        for name, type in self.filetype.items():
            if pathname in type:
                return name
        return '无法判断类型文件'

class DeskTopOrg(object):
    def __init__(self):
        self.filetype = FileType()

    def Organization(self):     
        filepath = os.path.join(os.path.expanduser('~'),'Desktop')
        paths = glob.glob(filepath + '/*.*')
        # print('paths-->',paths)
        for path in paths:
            try:
                if not os.path.isdir(path):
                    file = os.path.splitext(path)
                    filename,type = file
                    # print('type-->',type)
                    # print('filename-->',filename)
                    print('path-->',path)
                    dir_path = os.path.dirname(path)
                    # print('dir_path-->',dir_path)
                    savePath = dir_path + '/{}'.format(self.filetype.JudgeFile(type))
                    print('savePath-->',savePath)
                    if not os.path.exists(savePath):
                        os.mkdir(savePath)
                        shutil.move(path, savePath)
                    else:
                        shutil.move(path, savePath)
            except FileNotFoundError:
                pass
        # print('程序执行结束!')

if __name__ == '__main__':
    try:
        while True:
            desktopOrg = DeskTopOrg()
            desktopOrg.Organization()
            print('---->你的桌面已经整理完成。')
            a = input('---->请按回车键退出:')
            if a == '':
                break
    except BaseException:
        print('ERROE:路径错误或有重复的文档')
整理完了,桌面清爽了不少。(注意此脚本是按后缀进行分类归档的)

3. 升级版

基于这个,我想是否可以对其他不同的路径进行整理呢,于是又优化了一下。
import os
import glob
import shutil

'''
@Author: huny
@date:  2020.12.06
@function:  文件整理
'''


class FileType():
    def __init__(self):
        self.filetype = {
            '图片': ['.jpeg', '.jpg', '.tiff', '.gif', '.bmp', '.png', '.bpg', 'svg', '.heif', '.psd'],
            '视频': ['.avi', '.flv', '.wmv', '.mov', '.mp4', '.webm', '.vob', '.mng', '.qt', '.mpg', '.mpeg', '.3gp', '.mkv'],
            '音频': ['.aac', '.aa', '.aac', '.dvf', '.m4a', '.m4b', '.m4p', '.mp3', '.msv', '.ogg', '.oga', '.raw', '.vox', '.wav', '.wma'],
            '文档': ['.oxps', '.epub', '.pages', '.docx', '.doc', '.fdf', '.ods', '.odt', '.pwi', '.xsn', '.xps', '.dotx', '.docm', '.dox',
'.rvg', '.rtf', '.rtfd', '.wpd', '.xls', '.xlsx', '.ppt', '.pptx', '.csv', '.pdf', '.md','.xmind'],
            '压缩文件': ['.a', '.ar', '.cpio', '.iso', '.tar', '.gz', '.rz', '.7z', '.dmg', '.rar', '.xar', '.zip'],
            '文本': ['.txt', '.in', '.out', '.json','xml','.log'],
            '程序脚本': ['.py', '.html5', '.html', '.htm', '.xhtml', '.c', '.cpp', '.java', '.css','.sql'], 
            '可执行程序': ['.exe','.bat','.lnk'],
            '字体文件': ['.ttf', '.OTF', '.WOFF', '.EOT']
        }

    def JudgeFile(self, pathname):
        for name, type in self.filetype.items():
            if pathname in type:
                return name
        return '无法判断类型文件'

class DeskTopOrg(object):
    def __init__(self):
        self.filetype = FileType()

    def Organization(self):
        filepath = input('请输入需要整理的文件夹路径: ')
        paths = glob.glob(filepath + '/*.*')
        print('paths-->',paths)
        for path in paths:
            try:
                if not os.path.isdir(path):
                    file = os.path.splitext(path)
                    filename,type = file
                    print('type-->',type)
                    print('filename-->',filename)
                    print('path-->',path)
                    dir_path = os.path.dirname(path)
                    print('dir_path-->',dir_path)
                    savePath = dir_path + '/{}'.format(self.filetype.JudgeFile(type))
                    print('savePath-->',savePath)
                    if not os.path.exists(savePath):
                        os.mkdir(savePath)
                        shutil.move(path, savePath)
                    else:
                        shutil.move(path, savePath)
            except FileNotFoundError:
                pass
        print('程序执行结束!')

if __name__ == '__main__':
    try:
        while True:
            desktopOrg = DeskTopOrg()
            desktopOrg.Organization()
            print('---->你的文件已经整理完成。')
            a = input('---->请按回车键退出:')
            if a == '':
                break
    except BaseException:
        print('ERROE:路径错误或有重复的文档')
此时,你就可以整理任意路径下的文件了。

4. 打包成exe可执行文件

其他朋友也有需求,但是又没有python环境,于是我将程序打包成exe执行文件。
① 安装pyinstaller
pip install pyinstaller
② 执行打包命令
#在程序脚本的路径执行以下命令
pyinstaller -F ***.py      
执行完后生成几个文件,在dist文件下有一个exe可执行文件,将他单独发给朋友即可。
别忘了先自己测试一遍。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约