2

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

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

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

   zf = zipfile.ZipFile(fn)
   for name in zf.namelist():
        filename = os.path.basename(name)
        zf.extract(name, filepath)
    zf.close()

另一个版本:

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,它可以工作,但很烦人。它打开了很多窗口探索窗口。

4

1 回答 1

2

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

在 Windows 文件系统上,您可以win32file用来指定创建文件的时间。有关详细信息,请参阅此答案

在 Linux 文件系统上并没有真正的“创建日期”,只有 inode 的最后修改时间戳。要编辑它,您需要破解文件系统本身(在卸载时),更改系统时间或破解内核以允许编辑 inode。这个答案显示了后两者的解决方案。

在 Mac 上,您可以调用setfile -d更改创建日期,但您必须先安装它。你可以在这里找到它的文档

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

于 2013-11-21T16:02:24.530 回答