【办公类-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.mzph.cn/bicheng/58912.shtml

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

相关文章

电脑没有下载声卡驱动怎么办?电脑声卡驱动安装方法

在日常使用电脑的过程中,我们可能会遇到电脑没有声音的问题,这往往与声卡驱动缺失或损坏有关。声卡驱动是连接电脑硬件(声卡)与操作系统之间的桥梁,确保音频信号能够正常输入输出。那么,当电脑没有声卡驱动…

MYSQL死锁真实案例

​最近例行巡检时候发现一个死锁,阿里云RDS FOR MYSQL 8.0.X! 虽然阿里云的死锁页面看起来比较友好,不过跟社区版一样只是显示事务最后一条死锁SQL和相关的信息.一不小心对初级MYSQL DBA来说,深深地误导,浪费大量时间研究这两个SQL怎么发生了死锁! 阿里云RDS默认情况下审计没有…

【Spring】Spring Boot 日志(8)

本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。 目录 本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。 …

饿了么数据库表设计

有商家表、商品表、商品规格表、购物车表,不难分析出表是不够全面的。 (1)首先分析需要补充的表 1.对于购物车而言肯定有对应的用户,因此要添加一个用户表。 2.商品规格是冷,热,半分糖、全糖,对于冷热和半分糖是可以分…

C++模拟实现list

C教学总目录 C模拟实现list 1、成员变量2、迭代器3、insert函数4、erase函数5、pop_back、push_front、pop_front函数6、size和clear函数7、析构函数8、拷贝构造函数9、赋值运算符重载完整代码(包含测试代码) 1、成员变量 先来看看SGI版本STL中list的实…

【STM32】SD卡

(一)常用卡的认识 在学习这个内容之前,作为生活小白的我对于SD卡、TF卡、SIM卡毫无了解,晕头转向。 SD卡:Secure Digital Card的英文缩写,直译就是“安全数字卡”。一般用于大一些的电子设备比如:电脑、数码相机、AV…

品牌怎么找到用户发的优质内容,进行加热、复制?

在,相对传统媒体来说,社交媒体营销具有更高的成本效益。品牌可以通过相对较低的成本达到大量潜在客户,尤其是通过口碑营销和内容分享,可以实现倍增的传播效果。在社媒营销的过程中,去找到与品牌有关的优质、正向内容&a…

物联网设备如何助力实现高效远程老人监护

在发达国家,老龄化进程加速,老年人常需医疗、行动辅助、安全保障及个人卫生护理,费用高昂。传统老人监护依赖护士或助理现场照料,而物联网远程监控方案能有效改进此模式。它通过运用传感器等技术,实现全天候低成本实时…

如何使用和打开jconsole

配置: spring.jmx.enabledtrue spring.jmx.default-domainmybatiesdemo management.endpoints.jmx.exposure.include* 启动参数: -Dcom.sun.management.jmxremote.port9000 -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse 启动项…

残差块(Residual Block)

1. **残差块的定义与作用**: 残差块通过引入跳跃连接(skip-connection)或称为快捷连接(shortcut connection),允许网络学习输入与输出之间的残差映射,即学习函数,其中 是期望的底层映…

Sigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导

SSigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导 Sigrity Power SI的VR noise Metrics check模式本质上是用来评估和观测器件的电源网络的耦合对于信号的影响,输出S参数以及列出具体的贡献值。 以下图为例

讲个故事-HTTP/HTTPS 协议访问逻辑

一、HTTP/HTTPS 协议基本概念 1、协议 HTTP与 HTTPS 协议都是客户端 浏览器和服务器间的一种约定,约定如何将服务器中的信息下载到本地 ,并通过浏览器显示出来。 不同的是, HTTP 协议是一种明文传输协议,其对传输的数据不提供任何加密措施。而HTTPS 协议则是通过 SSL/TL…

生信入门第八课:RNA-seq比对、定量和差异分析

生信入门合集: 生信入门第一课:VirtualBox安装Ubuntu虚拟机 生信入门第二课:RNA-seq生信分析环境搭建-conda及常用软件安装 生信入门第三课:Linux操作系统简介及生信分析常用30个命令 生信入门第四课:生物信息学常…

打响反对人工智能的第一枪

序言:人工智能的讨论不能只有一片叫好的声音,一味的追捧反而可能隐藏巨大的危机。因此,必须有反对的声音,且越强烈越能激发深入思考。本篇文章的作者就以犀利的视角,漂亮地打响了反对人工智能应用的第一枪。 我以前一…

HR为什么都开始使用智能招聘系统?

数字化时代到来,人力资源管理领域正经历着前所未有的变革。 众所周知,今年的招聘市场,HR们正面临着越来越繁重的招聘任务。传统的招聘方式,如手动筛选简历、安排面试等,耗时费力极易出错。而且,传统的招聘…

机器人大模型GR2——在大规模视频数据集上预训练且机器人数据上微调,随后预测动作轨迹和视频(含清华RDT详解)

前言 上个月的24年10.9日,我在朋友圈看到字节发了个机器人大模型GR2,立马去看了下其论文(当然了,本质是个技术报告) 这次也是我头一次看paper,不看正文,而是直奔其References,​看有没有我预想中的文献&a…

【VSCode】配置

安装插件 C vscode-icons gdb调试 https://www.bilibili.com/video/BV15U4y1x7b2/?spm_id_from333.999.0.0&vd_sourcedf0ce73d9b9b61e6d4771898f1441f7f https://www.bilibili.com/video/BV1pU4y1W74Z?spm_id_from333.788.recommend_more_video.-1&vd_sourcedf0…

客服宝快捷回复软件:客服工作的得力助手

在从事客服工作的这段漫长时间里,响应率和满意度一直是我最为头疼的绩效指标。这两个指标就如同两座大山,压得我时常喘不过气来。 然而,幸运的是,最近我安装了客服宝这个快捷回复软件,这一举措如同为我打开了一扇新的…

Hive的数据存储格式

目录 一、前言 二、存储格式 2.1、文本格式(TextFile) 2.1.1、定义与特点 2.1.2、存储与压缩 2. 1.3、使用场景 2.2、行列式文件(ORCFile) 2.2.1、ORC的结构 2.2.2、ORC的数据类型 2.2.3、ORC的压缩格式 2.2.3、ORC存储…

蓝牙BLE开发——红米手机无法搜索蓝牙设备?

解决 红米手机,无法搜索附近蓝牙设备 具体型号当时忘记查看了,如果你遇到有以下选项,记得打开~ 设置权限