计算机办公自动化——Python文件整理

Python使用OS库进行文件整理

  • 前言
  • 示例代码
  • 效果演示

前言

使用Python实现文件夹的整理,原理是根据各种文件的后缀名来判断文件是音频、图像、视频、代码文件等

操作系统:windows10 家庭版
开发环境:Pycharm Conmunity 2022.3
解释器版本:Python3.8

示例代码

废话就不多说,要说的都在注释里面了:

# 导入相关模块
import datetime
import os
from pathlib import Path
import time

# 创建分类表,使得文件根据不同的后缀名进入不同的文件夹
DIRECTORIES = {
    "图片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg",
               ".heif", ".psd"],
    "视频": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng",
               ".qt", ".mpg", ".mpeg", ".3gp", ".mkv"],
    "文档": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods",
                  ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox",
                  ".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt",
                  "pptx",".csv",",pdf"],
    "压缩文件": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z",
                 ".dmg", ".rar", ".xar", ".zip"],
    "影音": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3",
              ".msv", "ogg", "oga", ".raw", ".vox", ".wav", ".wma"],
    "文本": [".txt", ".in", ".out"],
    "编程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"],
    "可执行程序": [".exe"],
}

dir_name = ["图片","视频","文档","压缩文件","影音","文本","编程","可执行程序","其他文件"]

FILE_FORMATS = {file_format: directory
                for directory, file_formats in DIRECTORIES.items()
                for file_format in file_formats}

# 文件整理
def auto_organize(dirval):
    # 整理对应的文件夹下的文件
    for entry in os.scandir(dirval):
        if entry.is_dir():
            # 如果是文件夹则跳过,先不处理
            continue
        file_path = Path(dirval + "\\" + entry.name)
        file_format = file_path.suffix.lower()
        # 避免后缀大小写判断问题,将后缀名全转为小写
        if file_format in FILE_FORMATS:
            directory_path = Path(dirval + "\\" + FILE_FORMATS[file_format])
            directory_path.mkdir(exist_ok=True)
            # 重命名
            file_path.rename(directory_path.joinpath(entry.name))

    # try-except 创建名为“其他文件”的文件夹
    try:
        os.mkdir(dirval + "\\" +"其他文件")
    except:
        pass
    # 将未处理的文件加入其他文件
    for dir in os.scandir(dirval):
        try:
            if dir.is_dir():
                # 删除空文件夹
                os.rmdir(dir)
            else:
                temp = str(Path(dir)).split('\\')
                # 分割文件路径
                path = '\\'.join(temp[:-1])
                print(path + '\\其他文件\\' + str(temp[-1]))
                # 重命名,更改其路径
                os.rename(str(Path(dir)), path + '\\其他文件\\' + str(temp[-1]))

        except:
            pass

    # 获取当前日期
    now = datetime.datetime.now()
    now = now.strftime("%Y-%m-%d")
    # 创建名为 当前日期的文件夹
    try:
        os.mkdir(dirval + "\\" + now)
    except:
        pass


    # 所有带后缀名的办公文件已经整理完毕,现在清点文件夹
    for entry in os.scandir(dirval):
        if entry.is_dir():
            if entry.name in dir_name:
                # 如果是办公类的文件夹,那么归入今天这个文件夹中
                os.rename(dirval+"\\"+entry.name,dirval+"\\"+ now +"\\"+entry.name)

    print("文件已整理成功!")


if __name__ == "__main__":
    # 调用函数,开始整理文件
    auto_organize(input("请输入待整理文件夹的完整路径:"))

效果演示

下面这个是整理之前的文件夹:

计算机办公自动化——Python文件整理_第1张图片

下面演示我们的代码:

计算机办公自动化——Python文件整理_第2张图片
控制台提示我们已经整理好了

下面我们进入文件夹查看:计算机办公自动化——Python文件整理_第3张图片

生成了一个以今日日期命名的文件夹,进入查看,发现文件都已被分类好

计算机办公自动化——Python文件整理_第4张图片

你可能感兴趣的:(Python实例,python,开发语言)