【python】读取文件的创建时间、修改时间并写入修改时间

文章目录

需求背景

许多图片压缩软件在压缩图片后,会丢失图片文件的真正创建时间、修改时间,也就会导致图片时间线被打乱。

因此需要从原始图片中读取创建时间、修改时间,并将其中较早的一个写入压缩后图片的修改时间。

  • 注 1:实际观察中发现,有的图片修改时间比创建时间更早
  • 注 2:写入文件的创建时间需要额外安装第三方库 pip install pywin32,而时间线一般只需要修改时间即可,因此没有实现对创建时间的修改。

代码


# 从 source_dir 读取文件创建时间和修改时间
# 将两个时间中最早的一个写入 target_dir 各同名文件
# 用于恢复压缩图片的时间戳

import os
import shutil
import datetime


def get_file_times(file_path):
    # 获取文件的创建时间和修改时间
    created_time = datetime.datetime.fromtimestamp(os.path.getctime(file_path))
    modified_time = datetime.datetime.fromtimestamp(
        os.path.getmtime(file_path))

    return created_time, modified_time


def change_file_time(file_path, new_modify_time):
    # 将新的修改时间转换为时间戳
    modify_timestamp = new_modify_time.timestamp()

    # 使用 os.utime() 函数修改文件的修改时间
    os.utime(file_path, times=(modify_timestamp, modify_timestamp))


def merge_file_times(source_dir, target_dir):
    # 遍历源文件夹中的文件
    for root, dirs, files in os.walk(source_dir):
        for file in files:
            # 构建源文件和目标文件的路径
            source_file_path = os.path.join(root, file)
            target_file_path = os.path.join(target_dir, file)

            # 获取源文件的创建时间和修改时间
            created_time, modified_time = get_file_times(source_file_path)

            # 将创建时间和修改时间中较早的一个作为目标文件的修改时间
            new_modify_time = min(created_time, modified_time)

            # 如果目标文件不存在,则创建一个空文件
            if not os.path.exists(target_file_path):
                continue

            # 修改目标文件的修改时间
            change_file_time(target_file_path, new_modify_time)


# 指定源文件夹和目标文件夹的路径
source_dir = r'C:\Users\PC\Desktop\src'
target_dir = r'C:\Users\PC\Desktop\compress'

# 合并文件时间
merge_file_times(source_dir, target_dir)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值