我正在尝试使用 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/