python - 从 zip 文件中提取文件并保留 mod 日期?

标签 python zip extraction

我正在尝试使用 Python 2.7.1(在 Windows 上,仅供引用)从 zip 文件中提取文件,并且我的每次尝试都显示提取的文件,其中修改日期 = 提取时间(这是不正确的)。

import os,zipfile
outDirectory = 'C:\\_TEMP\\'
inFile = 'test.zip'
fh = open(os.path.join(outDirectory,inFile),'rb') 
z = zipfile.ZipFile(fh)
for name in z.namelist():
    z.extract(name,outDirectory)
fh.close()

我也尝试使用 .extractall 方法,结果相同。

import os,zipfile
outDirectory = 'C:\\_TEMP\\'
inFile = 'test.zip'
zFile = zipfile.ZipFile(os.path.join(outDirectory,inFile))        
zFile.extractall(outDirectory)

谁能告诉我我做错了什么?

我认为这是可能的,无需根据 How do I change the file creation date of a Windows file? 对修改后的时间进行后期更正。 .

最佳答案

嗯,它确实需要一些后期处理,但还不错:

import os
import zipfile
import time

outDirectory = 'C:\\TEMP\\'
inFile = 'test.zip'
fh = open(os.path.join(outDirectory,inFile),'rb') 
z = zipfile.ZipFile(fh)

for f in z.infolist():
    name, date_time = f.filename, f.date_time
    name = os.path.join(outDirectory, name)
    with open(name, 'wb') as outFile:
        outFile.write(z.open(f).read())
    date_time = time.mktime(date_time + (0, 0, -1))
    os.utime(name, (date_time, date_time))

好吧,也许它那么糟糕。

关于python - 从 zip 文件中提取文件并保留 mod 日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9813243/

相关文章:

python - 如何在 python 中将一个大文件更改为 csv

python - Django onetoonefield 不保存实例

python - django zip 不等列表

cron - 备份目录的简单 Cronjob

ms-word - 如何自动将 PDF 转换为 HTML?

无需提取即可读取一行的 C++ fstream 函数?

python - 如何使用 xunit 风格的 setup_function

python - 使 tqdm 等函数在 Python 中接受不同类型的参数

node.js - Node.js 是否有一个 zip 存档创建/解压模块可以运行/维护?

c++ - 高效的 TIFF 图 block 提取 C++