目的
将一个zip归档文件拆分为更小的zip归档文件,每个新的zip文件平均分布有#个文件。在
示例
源zip(100个文件)
目标ZIP(每个25个文件):
说明
因此,我可以打开zip文件并遍历这些内容以将其拆分,但我无法写入该文件。既然我没有对压缩内容做任何事情,我就不认为我必须做任何StringIO的东西或其他什么?在
编码
zipFileNameSrc = '100-Test.zip'
zipFile = open(zipFileNameSrc)
unzippedFile = zipfile.ZipFile(zipFile)
imgList = [(s, unzippedFile.read(s)) for s in unzippedFile.namelist() if (".jpg" or ".JPG") in s]
#image names: imgList[i][0] and images: imgList[i][1]
#...
#...additional logic to split into sets of 25 images
#...fileTuplesList = imgList[:25]
zipNo = 1
#zipFileDest = destination + "/" + zipSrcNm + "/" + zipNo.__str__() + ".zip"
zipFileName = zipNo.__str__() + ".zip"
zipOut = zipfile.ZipFile(zipFileName, 'w')
for i in xrange(len(fileTuplesList)):
fileNameAndPath = fileTuplesList[i][0]
actualFile = fileTuplesList[i][1]
zipOut.write(fileNameAndPath, actualFile)
zipOut.close()
#move_files(zipFileName, zipFileDest)
错误
我在zipOut.write(fileNameAndPath, actualFile)
上查到这个
OSError: [Errno 2] No such file or directory: '100-Test/17.jpg'
奖金
如何将zip文件保存到与脚本所在位置不同的文件夹中?在
^{} 需要一个文件名作为第一个参数,该文件应该存在于系统中。如果是,则将该特定文件复制到zip存档中。在
实际上,您需要使用-^{} -它期望archivename作为第一个参数,data作为第二个参数。在
另外,您可以在任何地方创建zip归档文件,只需在创建
zipFileName
时使用os.path.join()
将目录加入到zip文件名中。执行所需操作的示例代码-在我的系统中工作的示例/演示代码-
^{pr2}$你有zipOut.写()参数向后。第一个参数是您希望写入的文件,第二个参数是您希望给文件指定的名称(您也可以将其留空,它只会自己使用文件名)。在
https://docs.python.org/3.4/library/zipfile.html#zipfile.ZipFile.write
^{pr2}$将名为filename的文件写入归档文件,并为其指定存档名称arcname(默认情况下,这与filename相同,但没有驱动器号,并且删除了前导路径分隔符)。如果给定,compress_type将重写为新项的构造函数提供的压缩参数值。存档必须以“w”或“a”模式打开-对使用“r”模式创建的ZipFile调用write()将引发运行时错误。对关闭的ZipFile调用write()将引发运行时错误。在
相关问题 更多 >
编程相关推荐