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

news2024/12/25 20:42:29

背景需求

最近带班,没有时间整理照片,偶尔导一次,几个月的照片。发现用电脑版“华为手机助手“中的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 shutil

folder_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:
        pass


import 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 shutil

folder_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:
        pass


import 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.coloradmin.cn/o/2234610.html

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

相关文章

人工智能技术:未来生活的“魔法师”

想象一下,未来的某一天,你醒来时,智能助手已经为你准备好了早餐,你的智能家居系统根据你的心情和日程安排调整了室内的光线和音乐,而你的自动驾驶汽车已经在门口等你。这不是科幻小说,这是人工智能技术为我…

Golang | Leetcode Golang题解之第538题把二叉搜索树转换为累加树

题目: 题解: func getSuccessor(node *TreeNode) *TreeNode {succ : node.Rightfor succ.Left ! nil && succ.Left ! node {succ succ.Left}return succ }func convertBST(root *TreeNode) *TreeNode {sum : 0node : rootfor node ! nil {if n…

信号带宽和上升沿的关系:【图文讲解】

目录 1:什么是信号带宽 2:带宽计算公式 3:实际应用 这里讨论的信号,是指数字信号,默认为方波信号。 方波是一种非正弦曲线的波形,具有明确的“高”和“低”两个电平值,且占空比(…

大数据新视界 -- 大数据大厂之 Impala 性能优化:从数据压缩到分析加速(下)(8/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

SpringAI QuickStart

Spring AI 官方文档:Spring AI Spring AI 是一个面向 AI 工程的应用框架,其目标是将 Spring 生态系统的可移植性和模块化设计等设计原则应用到AI 领域,并推动将 POJO 作为应用的构建块应用于 AI 领域。 其特点是跨 AI 供应商支持的便携式 A…

Matplotlib | 条形图中的每个条形(patch)设置标签数据的方法

方法一 不使用子图对象如何给形图中的每个条形设置数据 plt.figure(figsize(8, 4)) sns.countplot(xWorkout_Frequency (days/week), datadf)plt.title(会员每周锻炼频率分布) plt.xlabel(锻炼频率 (每周次数)) plt.ylabel(人数)# 获取当前活动的轴对象 ax plt.gca()# 循环遍…

浅析Android Handler机制实现原理

0. 背景描述 Android系统出于对简单、高效的考虑,在设计UI体系时采用了单线程模型,即不会在多个线程中对同一个UI界面执行操作。简单是指单线程模型可以不用考虑和处理在多线程环境下操作UI带来的线程安全问题,高效是指单线程模型下无需通过…

美格智能5G车规级通信模组: 5G+C-V2X连接汽车通信未来十年

自2019年5G牌照发放开始,经过五年发展,我国5G在基础设施建设、用户规模、创新应用等方面均取得了显著成绩,5G网络建设也即将从基础的大范围覆盖向各产业融合的全场景应用转变。工业和信息化部数据显示,5G行业应用已融入76个国民经…

LINUX下的Mysql:Mysql基础

目录 1.为什要有数据库 2.什么是数据库 3.LINUX下创建数据库的操作 4.LINUX创建表的操作 5.SQL语句的分类 6.Mysql的架构 1.为什要有数据库 直接用文件直接存储数据难道不行吗?非得搞个数据库呢? 首先用文件存储数据是没错,但是文件不方…

使用yolov3配置文件训练自己的数据

目录 前言 一、准备数据集 二、创建文件结构 三、格式化文件 1.data文件夹 2.config文件夹 四、修改yolo的配置文件 1.train文件 2.json2yolo文件 3.datasets文件 前言 使用yolov3框架训练自己的数据大致分为这四步: 准备数据集创建文件结构格式化文件 …

vue组件在项目中的常用业务逻辑(3)

获取完后台接口数据后,需将数据在页面中进行动态展示。 一、在getters中简化数据: 二、在search>index.vue中写计算属性,实现将接口的goodsList模块数据展示在vue的search上: 三、1.用v-for循环数据,一共十个&…

改变自己最快的方式,就5个字,早践行早受益

学习和工作效率不高,总是被屏幕上突然弹出的各种消息扰乱大脑,打破既定节奏? 在如今这个娱乐至死的时代,短视频横行,网络聊天,吃喝玩乐极度便捷,娱乐触手可得,我们的注意力被太多东…

FLINK单机版安装部署入门-1

文章目录 FLINK单机版安装部署高于1.9.3需要修改配置文件flink-conf.yaml(低于1.9.3可以跳过)linux启动集群windows下启动Flink提交任务方式命令方式提交运行WordCount任务运行streaming任务 web页面提交任务取消Job java: Compilation failed: internal java compiler error高…

【Linux系列】Linux 和 Unix 系统中的`set`命令与错误处理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python | Leetcode Python题解之第537题复数乘法

题目: 题解: class Solution:def complexNumberMultiply(self, num1: str, num2: str) -> str:real1, imag1 map(int, num1[:-1].split())real2, imag2 map(int, num2[:-1].split())return f{real1 * real2 - imag1 * imag2}{real1 * imag2 imag1…

同三维T610UHK USB单路4K60采集卡

USB单路4K60HDMI采集卡,支持1路4K60HDMI输入和1路4K60HDMI环出,1路MIC输入1路Line IN音频输入和1路音频输出,录制支持4K60、1080P120,TYPE-C接口,环出支持1080P240 HDR 一、产品简介: 同三维T610UHK是一款USB单路4K60HDMI采集卡,…

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

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

腾讯混元3D生成大模型“ Hunyuan3D-1.0”正式开源

腾讯公司近日宣布,其最新的MoE模型“混元Large”以及混元3D生成大模型“Hunyuan3D-1.0”已正式开源,供企业及开发者免费下载并商用。 腾讯混元3D生成大模型是业界首个同时支持文字、图像生成3D的开源大模型,首批开源模型包含轻量版和标准版&…

论文阅读- --DeepI2P:通过深度分类进行图像到点云配准

目前存在的问题: 单模态配准具有局限性,多模态研究很少跨模态图像到点云配准问题是求解相机坐标系与点云之间的旋转矩阵R ∈ SO(3)和平移向量t ∈ R3。 这个问题很困难,因为由于缺乏点到像素的对应关系,无法使用 ICP、PnP 和捆绑调…