2013-12-12 38 views
0

我正在构建一个压缩存档,其中包含一些数据,用于过滤目录中的文件。在制作zip压缩文件后,该文件将从目录中取出并删除。我一直在问一个CRC算法来检查归档,所以我用这个:一个压缩目录的CRC测试表明它已损坏,但我可以打开并阅读它

test=zf.testzip() 

特试验失败,“测试”变量包含其中第一个必须由脚本过滤压缩文件。所以我假设其他人甚至都被破坏了。问题是我可以读取存档中的数据,通过提取存档完全复制它们,问题在哪里? 使档案中的代码如下:

import zipfile 
import os 
[...] 
if dozip==True: 
zf = zipfile.ZipFile(zipname, "w", comprez) 
for dirname, subdirs, files in os.walk(dir): 
    for filename in files: 
     fl=filename.split("-") 
     fdate= datetime.datetime.strptime(fl[0], "%Y%m%d") 
     if start <= fdate <= end: 
      if fl[1] == client_name+".stat": 
       zf.write(os.path.join(dirname, filename)) 
       if docancel==True: 
        os.remove(os.path.join(dirname, filename)) 
test=zf.testzip() 
if test == None: 
    zf.close() 
else: 
    print test 
    zf.close() 

哪里是我的错?我怎么解决这个问题? 提前。

+1

一两件事,你们没有关闭'zf'在第二代码片段。请包括一个简短的完整程序来说明错误。有关此调试技术的完整说明,请参阅http://SSCCE.ORG。 –

回答

1

你需要检查完整性之前关闭压缩文件,然后打开它在阅读后:

zf = zipfile.ZipFile(zipname, "w", comprez) 
[...] 
zf.close() 
zf2 = zipfile.ZipFile(zipname, "r") 
test=zf2.testzip() 
相关问题