网站建设市区,计算机多媒体毕业设计网站建设,优秀网站psd,vip视频网站怎么做背景需求
今天我用QQ相册导出照片#xff0c;但是始终在转圈#xff0c;手机上无法跳出“连结“”的提示#xff0c;换了台式和笔记本都无法传输。#xff08;明明5月14日还可以导出的#xff09;
最后我只能用华为传输助手#xff0c;把照片快速提取出来了。 使用原来…背景需求
今天我用QQ相册导出照片但是始终在转圈手机上无法跳出“连结“”的提示换了台式和笔记本都无法传输。明明5月14日还可以导出的
最后我只能用华为传输助手把照片快速提取出来了。 使用原来的日期分类代码
【办公类-04】VS python手机照片视频按日期文件夹整理_视频按日期分类-CSDN博客文章浏览阅读1.7k次点赞2次收藏2次。【办公类-04】VS python手机照片视频按日期文件夹整理_视频按日期分类https://blog.csdn.net/reasonsummer/article/details/122583051
import datetime
import os
import shutil
import timeallFileNum 0# 所有文件数量从0开始
myfile[]# 我的文件
mydir[]# 我的列表
movie_file_format[avi,mpeg,mp4,mov,ProRes,DNxHR,mfx,mkv,wmv,flv,rmvb,webm,asf]# 视频格式
text_file_format[DOC,PDF,HTML,TXT,HTL,DOCX]# 文本格式
img_file_format[bmp,jpg,jpeg,png,tif,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw,WMF,webp,avif,hdri,flic,emf,ico]# 图片格式
zip_file_format[rar ,zip,7z,CAB,ARJ,LZH,TAR,GZ,ACE,UUE,BZ2,JAR,ISO,MPQ]# 压缩格式
music_file_format[PCM,WAV,AIFF,MP3,AAC,OGG,WMA,FLAC,ALAC,WMA]# 音乐格式this_folder D:\\03照片导出 # 整理前的照片所在文件夹原始路径
# this_folderinput(原始路径).replace(\\,/)
those_folderD:\\04照片整理# 整理后的照片所在文件夹原照片删除目标路径
# those_folderinput(目标路径).replace(\\,/)def printPath(level, path):# 定义输出路径层级路径字符串global allFileNum # 返回allFileNum的全局变量打印一个目录下的所有文件夹和文件# 所有文件夹第一个字段是次目录的级别dirList [] # 目录清单# 所有文件fileList []# 返回一个列表其中包含在目录条目的名称(google翻译)files os.listdir(path)# 先添加目录级别dirList.append(str(level))for f in files:if (os.path.isdir(path / f)): # os.path.isdir()用于判断对象是否为一个目录if (f[0] .):# 排除隐藏文件夹。因为隐藏文件夹过多passelse:# 添加非隐藏文件夹dirList.append(f)# mydir.append(path / f)if (os.path.isfile(path / f)):# 添加文件fileList.append(f)myfile.append(path / f)# 当一个标志使用文件夹列表第一个级别不打印i_dl 0for dl in dirList:if (i_dl 0):i_dl i_dl 1else:# print(得到的文件夹,- * (int(dirList[-1])), dl)# 打印目录下的所有文件夹和文件目录级别1printPath((int(dirList[0])1), path / dl)for fl in fileList:# print(得到的文件路径,- * (int(dirList[-1])), fl)# 随便计算一下有多少个文件allFileNum allFileNum 1def judge_file(oldPath,location): # 定义判断文件老文件位置def TimeStampToTime(timestamp):# 定义时间转戳时间(时间戳)timeStruct time.localtime(timestamp)#时间结构体等于,格式化时间戳为本地的时间(时间戳)return time.strftime(%Y-%m-%d %H:%M:%S, timeStruct)#返回本地时间戳(结构累心,时间结构体)def get_file_format(file_path): # 定义获取后的文件格式(文件路径)file_namefile_path.split(/)[-1] #文件名称等于 文件路径 的最后一段 split(/)[-1] 以‘/ ’为分割f符保留最后一段# if file_name.find(.)0:# file_formatfile_name.split(.)[-1] #文件名称等于 文件路径 的最后一段# if file_format.lower() in movie_file_format or file_format.upper() in movie_file_format:# return 视频# # elif file_format.lower() in text_file_format or file_format.upper() in text_file_format:# # return 文本# elif file_format.lower() in img_file_format or file_format.upper() in img_file_format:# return 图片# elif file_format.lower() in music_file_format or file_format.upper() in music_file_format:# return 音频# elif file_format.lower() in zip_file_format or file_format.upper() in zip_file_format:# return 压缩# else:# return 其他 # else:# return 文本def move_file(new_dir):#定义转移文件 新的列表old_file_name oldPath.split(/)[-1]#老文件名等于老路径的最后一段# 将文件移动到新文件夹shutil.move(oldPath, new_dir / old_file_name) # a-bprint(-*50已完成%.2f % ((location 1) / allFileNum*100))# ImageDate datetime.datetime.strftime(time.ctime(os.stat(imgPath).st_mtime), %Y-%m-%d %H:%M:%S)a os.stat(oldPath).st_mtime # 文件时间戳 os.stat(老路径文件).st_mtime#得到文件创建时间判断文件夹是否存在creat_timeTimeStampToTime(a)[:-9]# 创造时间戳print(creat_time) #打印创造的时间 str 2021-01-10 10:05:31folder_formatget_file_format(oldPath)# 新列表展示为三段式结构——整理后的路径一级文件夹创造的时间二级文件夹文件格式图片 视频等 三级文件夹# new_dir%s/%s/%s%(those_folder,creat_time,folder_format) # 阿夏需要两级文件夹整理后的路径一级文件夹创造的时间二级文件夹里面装了混合的照片和视频。手动整理new_dir%s/%s%(those_folder,creat_time)#不存在文件夹则创建文件夹if not os.path.exists(new_dir):os.makedirs(new_dir)move_file(new_dir)#如果存在就判断是否是重复文件else :if oldPath.split(/)[-1] in os.listdir(new_dir):print(重复文件略过)passelse:move_file(new_dir)
def do_all():for i in myfile:judge_file(i,myfile.index(i))
printPath(1, this_folder)
do_all()
input()
# ————————————————
# 版权声明本文为CSDN博主「lidashent」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。
# 原文链接https://blog.csdn.net/lidashent/article/details/113919375结果只出现一个文件夹。从4月26-6月4日 发现程序可能按照“修改日期”整理文件了而不是按照拍摄日期整理 华为助手导出照片按照创建日期生成了我需要按照拍摄日期文件夹整理让AI修改代码内容。 代码展示 QQ相册导出失灵后使用华为助手导出照片结果4月28日-6月4日的照片都打包在6月4日文件夹里
运用AI对话大师将原来的代码进行修改。实现按如期分类华为手机助手导出的照片指定读取拍摄时间只能转移照片视频不行
作者AI对话大师
时间2024年6月4日import os
import shutil
import exifreadallFileNum 0
myfile []
mydir []
img_file_format [bmp, jpg, jpeg, png, tif, gif, pcx, tga, exif, fpx, svg, psd,cdr, pcd, dxf, ufo, eps, ai, raw, WMF, webp, avif, hdri, flic, emf, ico]
video_file_format [avi, mpeg, mp4, mov, ProRes, DNxHR, mfx, mkv, wmv, flv, rmvb, webm, asf]
text_file_format [DOC, PDF, HTML, TXT, HTL, DOCX]
# 添加其他文件类型列表this_folder D:\\03照片导出
those_folder D:\\04照片整理def printPath(level, path):global allFileNumdirList []fileList []files os.listdir(path)dirList.append(str(level))for f in files:if (os.path.isdir(path / f)):if (f[0] .):passelse:dirList.append(f)if (os.path.isfile(path / f)):fileList.append(f)myfile.append(path / f)i_dl 0for dl in dirList:if (i_dl 0):i_dl i_dl 1else:printPath((int(dirList[0]) 1), path / dl)for fl in fileList:allFileNum allFileNum 1def get_file_format(file_path):file_name file_path.split(/)[-1]file_format file_name.split(.)[-1]if file_format.lower() in img_file_format:return elif file_format.lower() in video_file_format:return elif file_format.lower() in text_file_format:return # 添加其他文件类型判断条件else:return def move_file(oldPath, new_dir):old_file_name oldPath.split(/)[-1]shutil.move(oldPath, new_dir / old_file_name)print(- * 50 已完成%.2f % ((myfile.index(oldPath) 1) / allFileNum * 100))def get_create_time(file_path):with open(file_path, rb) as f:tags exifread.process_file(f)if EXIF DateTimeOriginal in tags:datetime_original tags[EXIF DateTimeOriginal]return str(datetime_original).split()[0].replace(:, -)return def judge_file(oldPath, location):create_time get_create_time(oldPath)if create_time:folder_format get_file_format(oldPath)new_dir %s/%s/%s % (those_folder, create_time, folder_format)if not os.path.exists(new_dir):os.makedirs(new_dir)move_file(oldPath, new_dir)else:print(无法获取拍摄日期跳过文件 oldPath)def do_all():for i in myfile:judge_file(i, myfile.index(i))printPath(1, this_folder)
do_all()
input()import os
import subprocessvideo_file_format [avi, mpeg, mp4, mov, ProRes, DNxHR, mfx, mkv, wmv, flv, rmvb, webm, asf]def get_video_create_time(file_path):if file_path.split(.)[-1].lower() not in video_file_format:return command [ffprobe, -v, quiet, -print_format, json, -show_format, file_path]result subprocess.run(command, capture_outputTrue, textTrue)if result.returncode 0:try:metadata result.stdoutcreation_time metadata[format][tags][creation_time]return creation_time.split(T)[0]except (KeyError, IndexError):passreturn def judge_file(oldPath, location):create_time get_create_time(oldPath)if not create_time:create_time get_video_create_time(oldPath)if create_time:folder_format get_file_format(oldPath)new_dir %s/%s/%s % (those_folder, create_time, folder_format)if not os.path.exists(new_dir):os.makedirs(new_dir)move_file(oldPath, new_dir)else:print(无法获取拍摄时间跳过文件 oldPath)# 在 judge_file 函数中添加了对视频文件的处理。首先我们尝试使用 get_create_time 函数获取拍摄时间。如果获取不到则调用 get_video_create_time 函数来获取视频文件的拍摄时间。如果最终无法获取到拍摄时间则跳过处理该文件。看看是否可以想办法读取照片、视频的文件名将图片、视频进行剪切转移黏贴。