Py脚本_文件分类

        最近发现通过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 shutildef 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.mzph.cn/pingmian/6684.shtml

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

相关文章

XML:基础

一、语法 基本结构&#xff1a; 实例一&#xff1a; <?xml version"1.0" encoding"ISO-8859-1"?> <note data"2008/08/08"> <to>George</to> <from>John</from> <heading>Reminder</heading&…

深入理解Java中的Lambda表达式

Java 8引入的Lambda表达式&#xff08;或称匿名函数&#xff09;是一种简洁优雅的语法&#xff0c;极大简化了开发者编写代码的方式。它可以作为参数传递给方法或赋值给变量&#xff0c;适用于简化代码的场景。本文将详细介绍Lambda表达式的使用&#xff0c;并结合代码实例进行…

C语言 void 指针就是空指针吗?它有什么作⽤?

一、问题 这是⼀个在⾯试时很容易出现的问题&#xff0c;但是也是很多⼈混淆的问题&#xff0c;这个问题如何回答&#xff1f; 二、解答 void 指针⼀般称为通⽤指针&#xff0c;要与空指针严格区分。void 指针⽤于指向⼀个不属于任 何类型的对象&#xff0c;所以 void 指针称为…

k8s集群安装

目录 部署步骤概览 1、基础环境部署 2、docker环境部署 3、配置k8s集群 4、集群初始化 5、安装dashboard软件 写在前面&#xff1a;本文安装单点master多node的k8s集群&#xff0c;主要用于k8s学习或k8s环境测试&#xff1b;部署的是1.23版本&#xff0c;在1.24版本起&am…

什么是TCP粘包?

TCP粘包 数据的接收和发送是无关的&#xff0c;read()/recv() 函数不管数据发送了多少次&#xff0c;都会尽可能多的接收数据。也就是说&#xff0c;read()/recv() 和 write()/send() 的执行次数可能不同。 举个栗子 write()/send() 重复执行三次&#xff0c;每次都发送字符…

stm32单片机开发四、USART“串口通信“

串口的空闲状态时高电平&#xff0c;起始位是低电平&#xff0c;来打破空闲状态的高电平 必须要有停止位&#xff0c;停止位一般为一位高电平 串口常说的数据为8N1&#xff0c;其实就是8个数据位&#xff08;固定的&#xff09;&#xff0c;N就是none&#xff0c;也就是0个校验…

【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解

一、计算机网络的发展背景 1、网络的定义 网络是指将多个计算机或设备通过通信线路、传输协议和网络设备连接起来&#xff0c;形成一个相互通信和共享资源的系统。 &#xff08;1&#xff09; 独立模式 独立模式 &#xff1a; 计算机之间相互独立。 &#xff08;2&#xff09;…

数据结构——二叉树链式结构的实现(下)

二叉树找值找为x的结点 找值不简单吗&#xff1f;轻轻松松拿捏&#xff0c;大部分同学都会写出这样的代码 但这种代码有问题&#xff0c;因为没有把查找结果返回给上一层&#xff0c;没有用返回值接收。 当找到3时返回给了上一层&#xff0c;但并没有用返回值接收&#xff0c;…

游戏名台词大赏

文章目录 原神&#xff08;圈内&#xff09; 崩坏&#xff1a;星穹铁道&#xff08;圈内&#xff09; 崩坏3&#xff08;圈内&#xff09; 原神 只要不失去你的崇高&#xff0c;整个世界都会为你敞开。 总会有地上的生灵&#xff0c;敢于直面雷霆的威光。 谁也没有见过风&…

Rust 生命周期浅谈

1. 简述 Rust 中的每一个引用都有其 生命周期&#xff08;lifetime&#xff09;&#xff0c;也就是引用保持有效的作用域。大部分时候生命周期是隐含并可以推断的&#xff0c;正如大部分时候类型也是可以推断的一样。类似于当因为有多种可能类型的时候必须注明类型&#xff0c;…

Arxml文件解析02- 自动驾驶Radar服务radar_svc.arxml

<AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00045.xsd

大数据面试题(九):Hive的高频面试考点(值得收藏)

文章目录 Hive的高频面试考点 一、Hive中两个大表实现join的操作,简单描述一下

书接上文,助力智能化诊断高质提效,基于轻量级CNN模型MobileNet开发构建人体手骨X光骨骼骨龄分析识别系统

骨龄是骨骼年龄的简称&#xff0c;需要借助于骨骼在X光摄像中的特定图像来确定。通常要拍摄左手手腕部位的X光片&#xff0c;医生通过X光片观察来确定骨龄。这在临床上是一件非常消耗精力和时间的一项放射临床工作。写一个骨龄可能要10多分钟去完成。如果一天要写几十个骨龄&am…

WPF中DispatchHelper

在WPF应用中&#xff0c;Dispatcher 是一个非常重要的概念&#xff0c;它帮助我们在正确的线程&#xff08;通常是UI线程&#xff09;上执行代码&#xff0c;这对于需要访问或更新UI元素的任务至关重要。由于WPF应用中的UI只能从UI线程进行访问&#xff0c;因此当你在后台线程上…

【汇编语言】中断及外部设备操作

【汇编语言】中断及外部设备操作 文章目录 【汇编语言】中断及外部设备操作前言一、中断及其处理中断的概念8086内中断中断处理程序案例&#xff1a;系统中的0号中断中断过程 二、编制中断处理程序中断处理程序及其结构编制中断处理程序——以除法错误中断为例do0子程序应该放在…

基础I/O--文件系统

文章目录 回顾C文件接口初步理解文件理解文件使用和并认识系统调用open概述标记位传参理解返回值 closewriteread总结 文件描述符fd0&1&2理解 回顾C文件接口 C代码&#xff1a; #include<stdio.h> int main() { FILE *fpfopen("log.txt",&…

《MySQL45讲》读书笔记

重建表 alter table t engine InnoDB&#xff08;也就是recreate&#xff09;&#xff0c;而optimize table t 等于recreateanalyze&#xff0c;让表大小变小 重建表的执行流程 建立一个临时文件&#xff0c;扫描表 t 主键的所有数据页&#xff1b;用数据页中表 t 的记录生…

python print 越来越优雅

在Python中&#xff0c;print() 是一个内置函数&#xff0c;用于将指定的字符串或变量的值输出到控制台&#xff0c;虽然简单&#xff0c;但却很有用&#xff0c;而且它一直在进步&#xff0c;我们来看看代码深切体会一下&#xff1a; # 打印简单的字符串 print("Hello, …

【升级U8+】不能将值 NULL 插入列 ‘LocaleID‘,表 ‘hr_bd_vouchertype_Base‘;列不允许有 Null 值。

【升级错误】 C:\U8SOFT\Admin\SQLFILE8710\Main\Ufdata\data\NL\data_data_hr_pr_mix_nl.sql 错误信息: -2147217873 不能将值 NULL 插入列 ‘LocaleID’,表 ‘UFDATA_101_2013.dbo.hr_bd_vouchertype_Base’;列不允许有 Null 值。INSERT 失败。 执行如下语句时出错: inse…

JSON.parse() 和 JSON.stringify()的用法

介绍 JSON.parse() 和 JSON.stringify() 是 JavaScript 中用于处理 JSON 格式数据的两个核心方法。 JSON.parse(): 用于将 JSON 字符串解析为 JavaScript 对象。JSON.stringify(): 用于将 JavaScript 对象转换为 JSON 字符串。 JSON.parse() JSON.parse() 方法将 JSON 字符…