python复制、解压zip保留原修改时间

本文介绍如何在Python中复制文件及解压zip文件时保留原始文件的修改时间,通过具体代码示例展示了使用os和shutil模块进行文件操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情景:在使用python复制文件或者解压zip文件时,文件的修改时间总是被搞成了当前的执行时间,这样有时会让人挺蛋疼的。

解压并保留原修改时间:

import zipfile

# 发布函数
def deploy():
    # 发布单号
    order_code = sys.argv[1]
    # 解压到当前目录,要包含根目录
    deploy_file_zip = os.path.join(source_path, order_code+".zip")
    f = zipfile.ZipFile(deploy_file_zip,'r')
    #for file in f.namelist():       
     #   f.extract(file,source_path)
    # 获取解压后根目录
    app_root_dir = f.namelist()[0][:-1]
    # 保留原修改时间
    for file in f.infolist():
    	# 先获取原文件的时间
        d = file.date_time
        gettime = "%s/%s/%s %s:%s" % (d[0], d[1], d[2], d[3], d[4])
        # 先解压文件
        f.extract(file, source_path)
        # 获取解压后文件的绝对路径
        filep = os.path.join(source_path, file.filename)
        timearry = time.mktime(time.strptime(gettime, '%Y/%m/%d %H:%M'))
        # 设置解压后的修改时间(这里把修改时间与访问时间设为一样了,windows系统)
        os.utime(filep, (timearry, timearry))
   ..........

复制保留文件原修改时间:

import os
import shutil
from stat import ST_ATIME, ST_CTIME, ST_MTIME

# 合包kcbp_risk
def merge_krisk(souce, dst):
    .....
        for root, dirs, files in os.walk(update_version_root_krisk):
            for f in files:
                # 原文件
                update_file = os.path.join(root, f)
              
                # 复制文件,如果存在就会覆盖,dst_file为复制后文件
                shutil.copy(update_file, dst_file)

                # 关键步骤:保留修改时间,ST_MTIME:修改时间,ST_CTIME:文件访问时间,windows下
                file_stat = os.stat(update_file)
                os.utime(dst_file, (file_stat[ST_CTIME], file_stat[ST_MTIME]))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值