【办公类-04-04】华为助手导出照片视频分类(根据图片、视频的文件名日期导入“年-月-日”文件夹中,并转移到“年-月”文件中整理、转移到“年”文件夹中整理)

背景需求

最近带班,没有时间整理照片,偶尔导一次,几个月的照片。发现用电脑版“华为手机助手“中的WLAN连接”与华为手机的“华为手机助手”连接,速度更快、更稳定,不会出现数据线连接时碰碰就断网的问题

1、先打开电脑版--WLAN网络连接

2、点击手机版

2、手机屏幕出现8个数字密码(不让截图)

3、电脑版上输入8个数字,连接

4、点击电脑版-华为助手-图片

出现“去手机上操作”提示,

5、点击允许

6、出现锁屏密码(无法截图)-输入自己的6位锁屏密码

7、可以使用

8、选择图片

9、全选图片-导出

10、我的图片导出到D盘

用原来写的照片分类代码把照片按照年月日分类

【办公类-04-03】华为助手导出照片视频分类(根据图片、视频的文件名日期分类导出)_华为手机照片导出按日期存放提取-CSDN博客文章浏览阅读1.2k次,点赞33次,收藏8次。【办公类-04-03】华为助手导出照片视频分类(根据图片、视频的文件名日期分类导出)_华为手机照片导出按日期存放提取https://blog.csdn.net/reasonsummer/article/details/139716209

结果出现了所有照片按照日期排列的日期照片文件夹

但是我需要手动新建两个月份文件夹,

选择所有的9月X日文件夹,剪切,

打开2024年9月文件,把刚才的内容黏贴进去。

我觉得有点烦,在分类年月日的基础上,可以直接按照文件夹的年月,将年月日文件剪切到年月文件里。

经过无数次的代码测试,终于实现了这个目标

思路:

1、读取2024-10-30文件夹中的2024和10,新建2024年10月文件夹

2、把整个“2024-10-30”文件夹剪切到2024年10月文件内

3、因为一天的照片不一定同时拍好,可能会分两三次整理,所以当2024年10月文件里已经有“2024-10-30”文件夹时,需要将新的“2024-10-30”文件内容内容替换条之前的“2024-10-30”文件夹里面的内容(重复照片被替换。)

'''
1、华为手机助手导出的照片,根据照片、视频的文件名中的日期,提取日期,转移到日期文件夹中
2、将日期文件夹复制到“”年月”文件夹内
IMG_20240428_085357.jpg
VID_20240603_131241.mp4
如果文件已存在,就替换它
作者:文心一言,阿夏
时间:2024年10月31日
'''import os
import re
from datetime import datetime
import shutilfolder_path = r'D:\03照片导出'
new_folder = r'D:\04照片整理2'
os.makedirs(new_folder, exist_ok=True)file_names = os.listdir(folder_path)for file_name in file_names:split_name = re.split("_", file_name)if len(split_name[1]) == 8:date_obj = datetime.strptime(split_name[1], "%Y%m%d")new_folder_name = date_obj.strftime("%Y-%m-%d")print(new_folder_name)new_folder_path = os.path.join(new_folder, new_folder_name)os.makedirs(new_folder_path, exist_ok=True)target_path = os.path.join(new_folder_path, file_name)shutil.move(os.path.join(folder_path, file_name), target_path)elif len(split_name[1]) == 3:date_obj = datetime.strptime(split_name[2][:8], "%Y%m%d")new_folder_name = date_obj.strftime("%Y-%m-%d")print(new_folder_name)new_folder_path = os.path.join(new_folder, new_folder_name)os.makedirs(new_folder_path, exist_ok=True)target_path = os.path.join(new_folder_path, file_name)shutil.move(os.path.join(folder_path, file_name), target_path)else:passimport os
import shutil# 设置源文件夹路径  
source_folder = r'D:\04照片整理2'  # 遍历源文件夹下的所有子文件夹  
for folder in os.listdir(source_folder):  folder_path = os.path.join(source_folder, folder)  # 检查是否是文件夹并且长度是10  if os.path.isdir(folder_path) and len(folder) == 10:  # 提取年、月、日  year = folder[0:4]  month = str(folder[5:7])  day = folder[8:10]  # 创建目标文件夹路径  target_folder = os.path.join(source_folder, f'{year}年{month}月')  # 检查目标文件夹是否存在  if not os.path.exists(target_folder):  os.makedirs(target_folder)  # 如果目标文件夹不存在,直接移动整个文件夹  shutil.move(folder_path, target_folder)  print(f'Moved {folder} to {target_folder}')  else:  # 如果目标文件夹存在,合并文件夹内容  target_subfolder = os.path.join(target_folder, folder)  # 尝试创建同名子文件夹路径  if not os.path.exists(target_subfolder):  os.makedirs(target_subfolder)  # 如果不存在,则创建  # 遍历源文件夹中的所有文件,并复制到目标子文件夹中  for root, dirs, files in os.walk(folder_path):  for file in files:  src_file = os.path.join(root, file)  dst_file = os.path.join(target_subfolder, file)  # 复制文件,如果文件已存在,可以选择覆盖(shutil.copy2)或跳过(使用异常处理)  try:  shutil.copy2(src_file, dst_file)  # 使用shutil.copy2保留元数据  except FileExistsError:  print(f'Skipped {file} (already exists in {target_subfolder})')  # 可选:如果源文件夹中还有子文件夹,可以递归处理它们  # 但在这个特定案例中,我们假设文件夹结构是平的,即没有嵌套子文件夹  # 删除空的源文件夹(如果所有文件都已复制)  shutil.rmtree(folder_path)  # 注意:这只有在确认所有文件都已正确复制后才安全执行  print(f'Merged {folder} into {target_subfolder}')

转移流程:

1、导出的照片(9月和10月)

2、代码运行

最后只留下“年月”总文件夹

2024年9月里面有2个文件夹(测试用,所以都只有1张)

2024年10月里面有5个文件夹(测试用,所以只下了5天照片)

这样就能实现“JPG→《年月日》文件夹→《年月》文件夹”,能快速整理照片文件夹到“年月”里。

为了更快捷,我又做了一个“2024年”的一级文件夹,进一步提高整理的速度效率

整理到“年”

'''
1、华为手机助手导出的照片,根据照片、视频的文件名中的日期,提取日期,转移到日期文件夹中
2、将日期文件夹复制到“年-年月-年月日”文件夹内
IMG_20240428_085357.jpg
VID_20240603_131241.mp4
如果文件已存在,就替换它
作者:文心一言,阿夏
时间:2024年10月31日
'''import os
import re
from datetime import datetime
import shutilfolder_path = r'D:\03照片导出'
new_folder = r'D:\04照片整理2'
os.makedirs(new_folder, exist_ok=True)file_names = os.listdir(folder_path)for file_name in file_names:split_name = re.split("_", file_name)if len(split_name[1]) == 8:date_obj = datetime.strptime(split_name[1], "%Y%m%d")new_folder_name = date_obj.strftime("%Y-%m-%d")print(new_folder_name)new_folder_path = os.path.join(new_folder, new_folder_name)os.makedirs(new_folder_path, exist_ok=True)target_path = os.path.join(new_folder_path, file_name)shutil.move(os.path.join(folder_path, file_name), target_path)elif len(split_name[1]) == 3:date_obj = datetime.strptime(split_name[2][:8], "%Y%m%d")new_folder_name = date_obj.strftime("%Y-%m-%d")print(new_folder_name)new_folder_path = os.path.join(new_folder, new_folder_name)os.makedirs(new_folder_path, exist_ok=True)target_path = os.path.join(new_folder_path, file_name)shutil.move(os.path.join(folder_path, file_name), target_path)else:passimport os
import shutil# 设置源文件夹路径  
source_folder =new_folder 
new= new_folder +r'\2024年'  
os.makedirs(new,exist_ok=True)# 遍历源文件夹下的所有子文件夹  
for folder in os.listdir(source_folder):  folder_path = os.path.join(source_folder, folder)  # 检查是否是文件夹并且长度是10  if os.path.isdir(folder_path) and len(folder) == 10:  # 提取年、月、日  year = folder[0:4]  month = str(folder[5:7])  day = folder[8:10]  # 创建目标文件夹路径  target_folder = os.path.join(new, f'{year}年{month}月')  # 检查目标文件夹是否存在  if not os.path.exists(target_folder):  os.makedirs(target_folder)  # 如果目标文件夹不存在,直接移动整个文件夹  shutil.move(folder_path, target_folder)  print(f'Moved {folder} to {target_folder}')  else:  # 如果目标文件夹存在,合并文件夹内容  target_subfolder = os.path.join(target_folder, folder)  # 尝试创建同名子文件夹路径  if not os.path.exists(target_subfolder):  os.makedirs(target_subfolder)  # 如果不存在,则创建  # 遍历源文件夹中的所有文件,并复制到目标子文件夹中  for root, dirs, files in os.walk(folder_path):  for file in files:  src_file = os.path.join(root, file)  dst_file = os.path.join(target_subfolder, file)  # 复制文件,如果文件已存在,可以选择覆盖(shutil.copy2)或跳过(使用异常处理)  try:  shutil.copy2(src_file, dst_file)  # 使用shutil.copy2保留元数据  except FileExistsError:  print(f'Skipped {file} (already exists in {target_subfolder})')  # 可选:如果源文件夹中还有子文件夹,可以递归处理它们  # 但在这个特定案例中,我们假设文件夹结构是平的,即没有嵌套子文件夹  # 删除空的源文件夹(如果所有文件都已复制)  shutil.rmtree(folder_path)  # 注意:这只有在确认所有文件都已正确复制后才安全执行  print(f'Merged {folder} into {target_subfolder}')

不过这下所有的“年月日”文件夹都进入“2024年”里,。

OK,Python实现了我日常整理照片的全部需求!!!

在单位电脑上也试验了一下

单位电脑里,已经有“2024年”和2024年10月”的文件夹

先把“年月日”文件夹生成

文件夹开始转移到“2024年2”“2024年10月”里面

最后所有的“年月日”都不见了,转移到“年月”里面去了

这是今天的导入的

这是今天当天的文件夹

完美!

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

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

相关文章

CDGP|企业数据治理流程全解析

在当今信息化时代,数据已成为企业最重要的资产之一。为了充分发挥数据的价值,企业需要对数据进行全面、系统的治理。企业数据治理流程是一套确保数据质量、安全性和合规性的规范化流程,涵盖了从数据采集到销毁的全过程。本文将详细介绍一般企…

学习threejs,将多个网格合并成一个网格

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Geometry 几何体1.2 …

Linux 线程控制

一. 线程互斥 1.1 线程互斥相关概念 临界资源:多线程执行流共享的资源就叫做临界资源。临界区:每个线程内部,访问临界资源的代码,就叫做临界区。互斥:任何时刻,互斥保证有且只有一个执行流进入临界区&…

Centos安装ZooKeeper教程(单机版)

本章教程介绍,如何在Centos7中,安装ZooKeeper 3.9.3版本。 一、什么是ZooKeeper ? Apache ZooKeeper 是一个分布式协调服务,用于大型分布式系统中的管理和协调。它为分布式应用提供了一个高性能的通信框架,简化了开发人员在构建复杂分布式系统的任务。ZooKeeper 能够解决一…

企业CRM管理系统PHP源码/PHP客户关系CRM客户管理系统源码

系统功能实现 1、 公海管理:公海类型、客户公海。 2、 线索管理:我的线索、线索列表、线索状态、线索来源。 3、 客户管理:我的客户、客户列表、成交客户、行业类别、预查、地区列表、客户状态、客户级别。 4、 业绩订单:订单列表、我的订单。 5、 系统设置:系统设置…

设置JAVA以适配华为2288HV2服务器的KVM控制台

华为2288HV2服务器比较老旧了,其管理控制台登录java配置比较麻烦,华为的ibmc_kvm_client_windows客户端测试了几个版本,连接控制台也有问题,最终安装JDK解决。 一、测试环境 主机为WindowsServer2012R2,64位系统 二、Java软件包…

10大软件使用感受分享,数据恢复的得力助手!!

在找数据恢复软件?!是不是存在误删重要文件或遭遇硬盘故障,想要找回丢失的数据?别担心,今天我就来给大家分享10款我亲自使用过的数据恢复软件,分别给你说说它们各自的优缺点,希望能帮你们在数据…

一周模电速成(3) 超详细!入门小白速成!!!

目录 稳压二极管 整流二极管 晶体三极管 三极管结构图 三极管的特点 1、如何让它工作在放大状态呢 2、如何工作在截止状态呢? 3、如何让三极管工作在饱和状态呢? 在电路中要如何实现呢?工作在各个状态有什么特点呢? 截止…

Python的条件语句if与match...case

一、定义 条件语句,也叫作选择语句、判断语句。根绝特定条件判断是否成立,执行不同的语句段。简单来说,满足条件执行,不满足不执行。 条件语句是使用关键字 if 做判断,根据不同情况结合不同的关键字else 或者 elif来…

SpringBoot基础系列学习(二):日志

文章目录 一丶日志控制台介绍二丶日志的用法三丶日志级别四丶配置文件参数及介绍五丶slf4j 一丶日志控制台介绍 只要引用了spring-boot-starter依赖,就无需引入日志依赖,里面自带了logging依赖,默认情况下,springBoot使用Logback来记录日志,并用INFO级别输出到控制台 二丶日…

Bert模型介绍

简介 BERT(Bidirectional Encoder Representations from Transformers)是一个基于Transformer的双向编码器表示模型,它通过预训练学习到了丰富的语言表示,并可以用于各种自然语言处理任务。 模型结构:BERT基于Transf…

AI驱动无人驾驶:安全与效率能否兼得?

内容概要 如今,人工智能正以其神奇的魔力驱动着无人驾驶的浪潮,带来了无数令人兴奋的可能性。这一领域的最新动态显示,AI技术在车辆的决策过程和实时数据分析中发挥着重要作用,帮助车辆更聪明地应对复杂的交通环境。通过实时监测…

Windows、Linux系统上进行CPU和内存压力测试

CPU和内存压力测试 1. Linux环境 Linux环境下,我们可以用 stress 工具进行内存、CPU等的压力测试。 【1】. stress工具说明 [kalamikysrv1 ~]$ stress --help stress imposes certain types of compute stress on your systemUsage: stress [OPTION [ARG]] ...-…

从零开始的c++之旅——多态

1. 多态的概念 通俗来说就是多种形态。 多态分为编译时多态(静态多态)和运行时多态(动态多态)。 编译时多态主要就是我们之前提过的函数重载和函数模板,同名提高传不同的参数就可以调 用不同的函数&#xff0c…

linux node vue3 部署手册

第一步:在linux 系统中安装node 1、在网址:https://nodejs.org/dist/ 下载对应版本的安装包。 2、解压缩下载的压缩包到任意位置,推荐home下。 样例路径为:/home/syl/node-v20.17.0-linux-x64.tar.xz 样例: tar -xv…

探索C/C++的奥秘之string类

string叫串,是一个管理字符数组的类,其实就是一个字符数组的顺序表,通过成员函数对字符串进行增、删、查、改。 C标准库里面的东西都在std这个命名空间中。 int main() { string s1; std:: string s2; std::string name("x…

【刷题】优选算法

优选算法 双指针 202. 快乐数 链接:. - 力扣(LeetCode) 【思路】 第一个实例是快乐数,因为会变为1且不断是1的循环 第二个实例不可能为1,因为会陷入一个没有1的循环 根据两个实例和鸽巢原理可以发现不断的平方和最…

openEuler的aarch64操作系统上安装k3s

1、需要安装docker容器引擎(省略) 2、安装ks3命令 curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRRORcn INSTALL_K3S_SKIP_SELINUX_RPMtrue INSTALL_K3S_SELINUX_WARNtrue sh -s -- --docker 其中&#xff1a…

Synchronized锁、锁的四种状态、锁的升级(偏向锁,轻量级锁,重量级锁)

目录 1. Synchronized锁 1.1 介绍 1.2 三种应用方式★ 1.2.1 synchronized同步方法 1.2.2 synchronized 同步静态方法 1.2.3 synchronized 同步代码块 1.3 Synchronized锁底层原理 1.3.1 简答 1.3.2 详述 1. Monitor对象 2. Monitor与对象锁关联时 具体的流程&#…

【网络】数据链路层

目录 以太网 以太网的帧格式 MSS 交换机 MTU对UDP的影响 ARP协议 数据链路层是软件层的最底层协议,它的下面就是物理层,那么下面我们就来介绍一下它负责在网络通信中完成什么工作 我们前面说的IP协议是解决如何进行跨网络转发的,也就是…