咨讯息 · 2023年5月26日 0

亲自动手教你把网盘存储相片浏览邻近地区后年份严重错误好些

  。

  解决之道  那边有三种情形  1.相片存EXIF重要信息  能在那个中文网站查阅与否存exif  https://exif.tuchong.com/

  预备组织工作  具体来说官方中文网站浏览vscode,加装  https://code.visualstudio.com/     加装顺利完成后按我的操作方式展开应用程序浏览

加装顺利完成后再次关上vscode就变为英文介面了  随即关上CMD依次输出  pip install Pillow  pip3 install datetime  在Python中,datetime 组件提供更多了处置年份和天数的机能。

  Pillow程序库加载相片的exif重要信息,并采用os程序库更动文档的修正年份。

  加装顺利完成后会提示信息获得成功

import os  import datetime  from PIL import Image  from PIL.ExifTags import TAGS  dir_path = r”C:UsersCCCCDesktopphoto”

  # 以获取文档条目  file_list = os.listdir(dir_path)  for file_name in file_list:      file_path = os.path.join(dir_path, file_name)

      try:          # 尝试关上图片文档          with Image.open(file_path) as img:              # 以获取图片的EXIF重要信息

exif_data = img._getexif()              # 如果图片包含EXIF重要信息              if exif_data:                  # 以获取拍摄年份和天数重要信息

                  datetime_str = exif_data.get(36867)                  if datetime_str:                      # 将字符串解析为datetime对象

dt = datetime.datetime.strptime(datetime_str, “%Y:%m:%d %H:%M:%S”)                      # 将修正年份设置为拍摄年份

                      os.utime(file_path, (os.path.getatime(file_path), dt.timestamp()))                      print(f”{file_name}: 拍摄年份设置为 {datetime_str}”)

                  else:                      print(f”{file_name}: 没有找到拍摄年份重要信息,跳过”)              else:                  print(f”{file_name}: 没有EXIF重要信息,跳过”)

except Exception as e:     

  大功告成

  那如果相片没有EXIF重要信息怎么办  我自己是这么解决的,通过提取文档名中的年份重要信息把它修正到修正年份,主要问题是如何提取文档名中的年份重要信息,这里我运用了CHATGPT来帮我编写代码  具体来说调教一下CHATGPT。

  能将你文档中有年份的文档名格式挑出典型让他学习理解。  然后告诉CHATGPT  请在”X:Moments”识别文档名的年份并修正文档“修正年份”

这样我们就能得到一个代码,但每个人文档的命名方式不一样所以代码也有可能不一样,我这里贴出我的代码,大家能尝试  # 指定目录  directory = rX:Moments  # 匹配年份的正则表达式。

  pattern = rd{4}-d{2}-d{2}  # 遍历目录下的所有文档  for root, dirs, files in os.walk(directory):      for file in files:

          # 提取文档名中的年份重要信息          match = re.search(pattern, file)          if match:              date_str = match.group()

# 将年份重要信息转换为年份对象              date = datetime.datetime.strptime(date_str, %Y-%m-%d)              # 以获取文档路径

              file_path = os.path.join(root, file)              # 修正文档的修正年份为年份对象对应的天数戳              os.utime(file_path, (os.path.getatime(file_path), date.timestamp()))

这样也能更动大部分文档,也算另辟蹊了  大部分文档我都通过这两个办法恢复了,有一些文档没有exif重要信息和文档年份重要信息,那就没有办法了  这篇文章的解决之道完全靠CHATGPT提供更多思路,包括报错等其他代码问题都是通过CHATGPT解决。