You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python获取gzip压缩包内文件修改时间失败,如何解决?

解决方案:获取压缩包内文件的修改时间

问题根源

你混淆了gzip和tar.gz两种格式:

  • gzip仅用于单个文件的压缩,它的头部仅存储被压缩的单个文件的元数据,且GzipFile类没有getinfo方法;如果压缩时未保留原文件修改时间,mtime会返回None。
  • 7zip能识别到内部的my_text.txt,说明你的my_archive.gz实际是tar.gz格式(先将文件打包为tar包,再用gzip压缩),这种情况需要用tarfile模块处理。

针对tar.gz格式的解决代码

import tarfile
import time

with tarfile.open('my_archive.gz', 'r:gz') as tar:
    # 获取目标文件的元数据对象
    tar_info = tar.getmember('my_text.txt')
    # 将Unix时间戳转换为(年, 月, 日, 时, 分, 秒)元组
    date_time = time.localtime(tar_info.mtime)[:6]
    print(date_time)

代码说明

  • tarfile.open('my_archive.gz', 'r:gz'):以读取gzip压缩tar包的模式打开文件。
  • tar.getmember('my_text.txt'):获取tar包内指定文件的TarInfo对象,该对象包含文件的修改时间、权限等元数据。
  • time.localtime(tar_info.mtime)[:6]:将TarInfo中的Unix时间戳转换为结构化时间,截取前6个元素即可得到你需要的格式。

若确实是单个文件的gzip格式

如果你的压缩包确实是单个文件的gzip(即my_archive.gz解压后直接是my_text.txt),可通过以下代码获取修改时间:

from gzip import GzipFile
import time

with GzipFile('my_archive.gz') as gzip_file:
    if gzip_file.mtime is not None:
        date_time = time.localtime(gzip_file.mtime)[:6]
        print(date_time)

注:若mtime仍为None,说明压缩时未保留原文件的修改时间(比如部分压缩工具未开启保留元数据的选项)。

内容的提问来源于stack exchange,提问作者VERBOSE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:57:23