Py脚本_文件分类

news2024/11/24 13:32:45

        最近发现通过Edge和chrome或者其他浏览器下载的文件都存放在一个地方就很繁琐,于是翻找以前的脚本来归纳这些文件,虽然有IDM下载独有会自动分类,但是相信很多同学都在一个文件里找文件,这次就写个Py脚本来实现这个功能。

# -*- coding: utf-8 -*-
# @Time : 2022/3/4 13:41
# @Author : 五指山下的泼猴!!
# @FileName: 文件分类-2.py
# @Software: PyCharm
# @Blog :https://blog.csdn.net/m0_57076217
import hashlib
import os
import shutil


def get_file_hash(file_path):
    # 计算文件的 SHA-256 哈希值
    with open(file_path, 'rb') as file:
        return hashlib.sha256(file.read()).hexdigest()


def organize_files(folder_path):
    # 创建一个名为“Duplicates”的文件夹,用于存放重复文件
    duplicates_folder = os.path.join(folder_path, 'Duplicates')
    os.makedirs(duplicates_folder, exist_ok=True)

    # 遍历文件夹中的文件
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if os.path.isfile(file_path):
            # 获取文件扩展名并转换为小写
            _, extension = os.path.splitext(filename)
            extension = extension.lower()

            # 确定目标文件夹
            if extension in ['.jpg', '.jpeg', '.png', '.gif', '.bmp']:
                destination_folder = 'Images'
            elif extension in ['.mp4', '.mov', '.avi', '.mkv']:
                destination_folder = 'Videos'
            else:
                destination_folder = extension[1:] if extension else 'Other'

            destination_path = os.path.join(folder_path, destination_folder)
            os.makedirs(destination_path, exist_ok=True)

            # 计算文件哈希值
            file_hash = get_file_hash(file_path)

            # 检查文件是否是重复文件
            if os.path.exists(os.path.join(destination_path, filename)) or \
                    file_hash in os.listdir(duplicates_folder):
                # 如果是重复文件,则移动到“Duplicates”文件夹
                shutil.move(file_path, os.path.join(duplicates_folder, filename))
                print(f"成功将文件 {filename} 移动到 Duplicates 文件夹.")
            else:
                # 否则移动到目标文件夹
                shutil.move(file_path, os.path.join(destination_path, filename))
                print(f"成功将文件 {filename} 移动到 {destination_path}")


if __name__ == "__main__":
    # 获取用户输入的文件夹路径
    folder_path = input("请输入要整理的文件夹路径(复制绝对路径):")
    # 调用函数进行文件整理
    organize_files(folder_path)

以下是效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1651657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git bash退出vim编译模式

解决方法: 1.按esc键(回到命令模式) 此时是没有分号让我们在后面输入命令的 2.按shift键: 3.再输入:wq,并按enter键 此时我们发现又回到git bash窗口 希望对大家有所帮助!

配置好Maven后本地仓库不自动加载以及创建Maven报错的解决方法

先退出到全局模式再点击All Settings 点击maven 修改Maven home path修改了这个local不同步 点击Flie中的Module 然后选择maven 点击next设置需要存放的位置以及组名 然后报错 报错误的原因是因为maven版本太高和与你使用的IDEA版本不兼容 将maven的版本改为3.6并修改环境变量 …

销毁机密文件你还在用删的吗?文件粉碎了解一下哈!(附自制工具下载)

网管小贾 / sysadm.cc 窗外淅淅沥沥,陶克龙回到闷热的办公室,一屁股坐到了椅子上。 一大早他就接到了组织的秘密联络,他的身份已经暴露,需要尽快撤离。 此时的陶克龙大脑飞快地运转着,他需要从纷繁复杂的思绪中抽丝剥…

对于习惯使用ftp传输的企业,如何寻找最佳的替代方案?

FTP协议广泛应用各行业的文件传输场景中,对于很多企业而言,由于FTP应用获取门槛低、使用普遍,因此,有较为稳定的FTP使用习惯,但即便如此,也不得不面对,FTP应用存在着严重缺陷: 传输效…

AnaTraf:一款功能强大的网络流量分析工具,助您实现高效网络管理

在当下迅速发展的网络时代,网络流量分析已经成为网络管理和维护的关键环节。 AnaTraf网络流量分析仪:全面把控网络状况 AnaTraf 是一款高性能的实时网络流量分析工具,能够帮助您全面了解网络状况,提高网络运维效率。其主要功能包括: 全流量回溯分析&am…

node报错——解决Error: error:0308010C:digital envelope routines::unsupported——亲测可用

今天在打包vue2项目时,遇到一个报错: 最关键的代码如下: Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:80:19)百度后发现是node版本的问题。 在昨天我确实操作了一下node&…

终于找到微信聊天记录SQLite数据库文件解密方法了,一起来看看吧!

https://github.com/xuchengsheng/ 获取当前登录微信的微信昵称、账号、手机号、邮箱、秘钥、微信Id、文件夹路径 将微信PC的多个聊天记录数据库合并为单一数据库文件 支持微信聊天对话窗口(文本消息,引用消息,图片消息,表情消息…

亚马逊最新的 Echo Show 5 和 Show 8

爆爆!亚马逊最新智能显示器终于来了!Show 8可是一个功能超强的小工具,既能当数码相框、智能家居控制器和闹钟,还能控制您家中的几乎所有设备!8英寸的显示屏让您流媒体和视频通话体验更加流畅! 如果您不需要…

Java并发编程: Synchronized锁升级

文章目录 一、jdk8 markword实现表二、使用工具来查看锁升级 一、jdk8 markword实现表 new -> 偏向锁 -> 轻量级锁(自旋锁、自适应自旋锁)-> 重量级锁: 偏向锁和轻量级锁都是用户空间完成的。重量级锁是需要向内核申请的。 synchr…

第五十一周:文献阅读+CNN-LSTM-AM

目录 摘要 Abstract 文献阅读:基于CNN-LSTM-AM时空深度学习模型的城市供水预测 现存问题 提出方法 创新点 方法论 CNN-LSTM-AM模型 研究实验 数据集 预处理 评估指标 实验过程 合格性验证 模型实现 总结 摘要 本周阅读的文献《Urban Water Supply …

Unity WebGL过曝问题的解决策略

文章目录 一些可能的解决策略1. **调整曝光设置**:2. **使用Lerp或其他颜色混合技巧**:3. **HDR与色调映射**:4. **检查光源强度和范围**:5. **材质和纹理设置**:6. **使用Platform-specific Settings**:7.…

已解决ERROR: Could not find a version that satisfies the requirement 亲测有效!!!

已解决ERROR: Could not find a version that satisfies the requirement 亲测有效!!! 亲测有效 报错问题解决思路解决方法 报错问题 当你尝试使用pip安装某个Python包时,遇到了以下错误: ERROR: Could not find a v…

css: hover 划过显示/隐藏 div 样式

1. 图例: 划过用display: block;和 display: none; 显示div和隐藏div div: <div class="sectorBox"> <div v-for="(item, index) in sectorList" :key="index" class="sill"> <div class="si…

【uniapp】阿里云OSS上传 [视频上传]

引用uniapp插件市场的插件,使用的是视频上传 &#xff08;阿里云 oss上传&#xff09; 我只使用了H5和App端&#xff0c;需要后端配置跨域 yk-authpup详情请参考 》》【用户告知权限申请的目的】 【插件市场】阿里云存储OSS前端直接上传(全端通用) - 前端JASON <template>…

链表的回文结构(详解)

链表的回文结构&#xff08;详解&#xff09; 题目&#xff1a; 链表的回文结构 对于一个链表&#xff0c;请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法&#xff0c;判断其是否为回文结构。 给定一个链表的头指针A&#xff0c;请返回一个bool值&#xff0c;代表…

机试:字符串相关简单问题

字符移动问题 这道题的描述是这样的&#xff1a;输入一个字符串&#xff0c;将其中的数字字符移动到非数字字符之后&#xff0c;并保持数字字符和非数字字符输入时的顺序。例如&#xff1a;输入字符串“ab4f35gr#a6”,输出为“abfgr#a4356”。 以下使我试着敲的代码&#xff…

GPS与精致农业 无人机应用 农业遥感 农业类

全球定位系统是美国国防部主要为满足军事部门对海上、陆地和空中设施进行高精度导航和定位的要求而建立的。GPS系统最基本的特点是以“多星、高轨、高频、测量-测距”为体制&#xff0c;以高精度的原子钟为核心。GPS作为新一代卫星导航与定位系统&#xff0c;不仅具有全球性、全…

命名空间、C++的输入输出、缺省参数(默认参数)、函数重载

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

【Leetcode每日一题】 穷举vs暴搜vs深搜vs回溯vs剪枝_全排列 - 子集(解法2)(难度⭐⭐)(72)

1. 题目解析 题目链接&#xff1a;78. 子集 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 为了生成一个给定数组 nums 的所有子集&#xff0c;我们可以利用一种称为回溯&#xff08;backtracking&#xff09;的算法…

java项目跑不起来 端口已被使用

背景 Springboot项目跑不起来&#xff0c;原因端口被占用。 解决方法 在 Windows 环境下&#xff0c;你可以按照以下步骤来查看某个端口被占用的情况&#xff0c;并停止相应的进程&#xff1a; 查看所有端口占用情况&#xff1a; 按下 Win R 键&#xff0c;打开运行窗口。…