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