当前位置: 首页 > 面试题库 >

从zip文件中提取文件并保留修改日期?

晁聪
2023-03-14
问题内容

我正在尝试使用Python 2.7.1(在Windows上,fyi)从zip文件中提取文件,而我的每一次尝试都显示了具有Modified Date
=提取时间的提取文件(不正确)。

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)

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

我想认为这是可能的,而不必重新校正每个[Windows文件的文件创建日期?](http://codingdict.com/questions/161992。


问题答案:

好吧,这确实需要一些后期处理,但是还不错:

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))

好吧,也许 那么糟糕。



 类似资料:
  • 问题内容: 我尝试从.zip提取包含一个文件夹中的子文件夹的所有文件。我希望子文件夹中的所有文件都仅提取到一个文件夹中而不保留原始结构。此刻,我提取所有内容,将文件移动到文件夹,然后删除以前的子文件夹。具有相同名称的文件将被覆盖。 在写入文件之前可以这样做吗? 例如,这是一个结构: 最后,我希望: 我可以在此代码中添加什么? 如果我从zip_file.namelist()重命名文件路径,则会出现此

  • 我正在尝试在xml文件中写入一些我迄今为止创建的很好的概要文件, 输入字符串为ProfilesList(0)=“45 65 67”ProfilesList(1)=“ProfileName”; 在xml文件中,配置文件是这样写的: ?XML Version=“1.0”encoding=“UTF-8”?profilesgroup xmlns:xsi=“http://www.w3.org/2001/xm

  • 我试图在这里找到答案并使用GhosScript,但没有成功。 所以,我有一个PDF文件与CropBox和MediaBox定义。CropBox/MediaBox比率在页面之间不同(尤其是在标题页和文档的其余部分之间)。我想要实现的是从每个页面提取CropBox,并用它的MediaBox eqal到CropBox呈现新的PDF。基本上,我想修剪所有的页面到Cropbox,并有MediaBox平等到这个

  • 我正在尝试为我的写作应用程序构建一个同步系统,以便我可以将文本文件与Dropbox文件夹同步,并从我的计算机上编辑它们。 问题是,当上传文件时,其修改日期与上传时间相对应,而不是上次修改文件内容的日期,而且看起来Dropbox文件的修改时间比本地文件的修改时间要晚。下载也是一样,因为本地版本的修改日期比Dropbox版本的更新。 当我想比较日期以确定本地版本和网络版本之间的最新版本,以及是否需要上

  • 问题内容: 嗨,我正在尝试从json文件中获取数据,然后插入和ID,然后执行POST REST。我的文件data.json具有: 并且我想添加一个id,以便json数据如下所示: 所以我尝试了: 我无法加载json格式文件。我应该怎么做才能将json文件转换为json对象并添加另一个id值。 问题答案: 使用设置项目。

  • 问题内容: 我正在尝试从.Net创建一个Zip文件,该文件可以从Java代码读取。 我已经使用SharpZipLib创建了Zip文件,但是如果生成的文件根据#ZipLib库的CheckZip函数是有效的,并且可以通过WinZip或WinRar成功解压缩,则在尝试使用Java对其进行解压缩时总是会收到错误消息Java中的.Utils.Zip类。 问题似乎出在SharpZipLib写的错误标题中,我还