首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中解压缩文件,但不更改文件创建时间

问在python中解压缩文件,但不更改文件创建时间
EN

Stack Overflow用户
提问于 2013-06-01 04:57:07
回答 1查看 2.2K关注 0票数 2

我尝试过用Python解压文件的多种方法,但每种方法都以错误的创建时间结束(因为Python创建了该文件的新副本,而不是真正从压缩后的文件中提取它)。例如,一个创建于2012-12-21的文件在使用Python解压缩时将显示今天的创建日期,但如果我使用其他工具(如WinZip),则文件创建时间不会更改。

有没有一种方法可以在不更改创建时间的情况下使用Python解压缩文件?

@Jason Sperske,这是我使用的代码:

代码语言:javascript
复制
   zf = zipfile.ZipFile(fn)
   for name in zf.namelist():
        filename = os.path.basename(name)
        zf.extract(name, filepath)
    zf.close()

另一个版本:

代码语言:javascript
复制
zf = zipfile.ZipFile(fn)
for name in zf.namelist():
    source = zf.open(name)
    target = open(os.path.join(filepath, filename), "wb")
    with source, target:
    shutil.copyfileobj(source, target)

我还在python中调用了winzip,它可以工作,但很烦人。它会打开很多窗口资源管理器窗口。

EN

回答 1

Stack Overflow用户

发布于 2013-11-22 00:02:25

在Python中没有通用的方法来设置文件的创建时间,但是您可以使用os.utime来设置修改和访问时间。

在Windows文件系统上,您可以使用win32file指定创建文件的时间。详情请参见this answer。

在Linux文件系统上,并没有真正的“创建日期”,只有inode的上次修改时间戳。要对此进行编辑,您需要修改文件系统本身(在卸载时),更改系统时间或修改内核以允许编辑inode。This answer展示了后两者的解决方案。

在Mac上,你可以调用setfile -d来更改创建日期,不过你必须先安装它。你可以找到its docs here。

不确定BSD或其他操作系统。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16865861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档