我正在使用.NET 4.5,如果我试图用" createFromDirectory"将整个目录缩小整个目录,则Zipfile类非常有效.但是,我只想将目录中的一个文件汇总.我尝试指向一个特定的文件(文件夹\ data.txt),但这不起作用.我考虑了ziparchive类,因为它具有" createEntryFromFile"方法,但这似乎只允许您创建一个条目,以中的现有文件. 如果没有创建空Zipfile(具有问题),然后使用ZiparchiveExtension的" Create entryFromFile"方法,没有办法简单地将一个文件拉开? **这也假设我正在制作目前无法使用第三方附加组件的公司计划. 示例来自: http://msdn.microsoft.com/en-us/library/ms404280%28V = vs.110%29.aspx string startPath = @"c:\example\start";
以下是关于 zipfile 的编程技术问答
我需要帮助将非常大的二进制文件(zip文件)转换为base64string,然后再次返回.这些文件太大,无法一次加载到内存中(它们抛出OutofMemoryExceptions),否则这将是一个简单的任务.我不想单独处理zip文件的内容,我想处理整个zip文件. 问题: i可以将整个ZIP文件(测试尺寸从1 MB到800 MB不等),为BASE64STRING,但是当我将其转换回时,它会损坏.新的zip文件是正确的大小,它被Windows和Winrar/7-zip等识别为zip文件,我甚至可以在zip文件中查看,并看到具有正确尺寸/属性的内容,但是当我尝试从zip文件中提取,我得到:"错误:0x80004005",这是一般错误代码. 我不确定腐败在哪里或为什么发生.我进行了一些调查,我注意到以下内容: 如果您有一个大的文本文件,则可以无问题地将其转换为base64string.如果在整个文件上调用Convert.ToBase64String产生:" abcdefg
如何在现有zip文件中添加一些文件(几乎总是一个.csv文件)? 解决方案 由于您在.NET 4.5中,因此可以使用ziparchive(system.o.compression)类实现这一目标.这是MSDN文档:( 这是他们的示例,它只是写文本,但是您可以在.csv文件中阅读并将其写入新文件.要仅复制文件,您将使用CreateFileFromEntry,这是ZipArchive的扩展方法. using (FileStream zipToOpen = new FileStream(@"c:\users\exampleuser\release.zip", FileMode.Open)) { using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update)) { ZipArchiveEntry readmeEntry = archive.CreateEntry("R
我正在使用C#程序下载zip文件,并且我得到错误 at System.IO.Compression.ZipArchive.ReadEndOfCentralDirectory() at System.IO.Compression.ZipArchive.Init(Stream stream, ZipArchiveMode mode, Boolean leaveOpen) at System.IO.Compression.ZipArchive..ctor(Stream stream, ZipArchiveMode mode, Boolean leaveOpen, Encoding entryNameEncoding) at System.IO.Compression.ZipFile.Open(String archiveFileName, ZipArchiveMode mode, Encoding entryNameEncoding) at System.IO.
我们的zip文件大小为5-10gb.典型的zip文件具有5-10个内部文件,每个文件均为1-5 GB未压缩. 我有一组很好的Python工具,用于读取这些文件.基本上,我可以打开文件名,如果有zip文件,则在zip文件中搜索工具,然后打开压缩文件.这一切都相当透明. 我想将Amazon S3中的这些文件存储为压缩文件.我可以获取S3文件的范围,因此应该可以获取ZIP中央目录(它是文件的末尾,所以我只能阅读最后一个64kib),找到我想要的组件,下载,并直接下载并直接流调用过程. 所以我的问题是,我如何通过标准的python zipfile api来做到这一点?它没有记录如何使用支持POSIX语义的任意对象替换文件系统传输.这可能是否可以重写模块? 解决方案 所以这里是允许您在Amazon S3上打开文件的代码,就像它是普通文件一样.注意我使用aws命令,而不是boto3 python模块. (我无法访问boto3.)您可以打开文件并寻找它.该文件在本地缓存.如果
我正在尝试重写我的应用程序来使用APK扩展文件.我一直在这里遵循文档 http://developer.android.com/google/play/expansion-files.html .我下载了... ......但是当我添加此代码... public static Uri getTrackUriFromZipFile ( int track ) { // Get a ZipResourceFile representing a specific expansion file ZipResourceFile expansionFile = new ZipResourceFile(filePathToMyZip); } ......我收到错误消息ZipResourceFile cannot be resolved to a type :( weep weep weep 编辑......嗯,也许我必须这样做像这样的事情... 如果您正在使
我正在使用一个asynctask解压缩文件,似乎进展顺利(zip存档中的所有文件都被提取),但我的解压缩方法永远不会完成. 这是我解压缩类的源: public class MyUnzipper { public static boolean unzipFileIntoDirectory(String inputFilename, String outputPath) throws Exception { ZipInputStream zis = null; BufferedOutputStream dest = null; try { File archive = new File(inputFilename); File destinationDir = new File(outputPath); final int BUFFER_SIZE
我们正在处理使用属性来检查 zip 中是否存在目录/文件的解压库/实用程序. 问题是我们无法在创建时为 zip 设置存档位.当我们以编程方式创建 zip 时,它也会清除以前的属性. 我们将尝试使用以下提到的步骤设置存档位,但到目前为止还没有得到预期的结果: 1. Parse each zip entry and getExtra byte[]. 2. Use Int value=32 and perform bitwise 'OR' operation. 3. setExtra byte[] after 'OR' operation. 添加更多细节:我们尝试了以下方法,但仍然无法解决此问题. 在文件系统上使用 setAttribute() 方法,但在创建 zip 时正在重置属性.Files.setAttribute(file, “dos:archive”, true) 使用 File.copy() 将与文件关联的文件属性复制到目标文件,但没有成功.甚至现有属
我尝试在命令提示符下使用以下命令将新文件夹添加到现有的 7za 存档: 7za.exe a repo.zip \res\pub\newfolder newfolder 上面的命令添加了一个文件夹到 repo.zip 的根目录.我的目的是将新文件夹添加到 location: \res\pub\folder inside repo.zip 谁能建议或给我一个正确的命令来将文件夹添加到存档的特定路径? 谢谢,普拉迪普 解决方案 尝试创建用于更新目标存档的源位置文件夹. 例如 7za.exe a "x:\destination_archive.7z" -up1q0r2x1y2z1w2 "c:\source_folder\*" -t7z -ms=off -mx1 我每天都使用这行代码来更新 7-zip 存档.您需要根据需要调整“-u"参数.
使用 .NET System.IO.Compression.ZipFile.CreateFromDirectory 类时,结果 zip 在带有正斜杠目录分隔符的系统上被严重提取. 原因:zip 在名称中包含反斜杠 解决方案 为了克服这个问题,存在一个解决方法: class MyEncoder : UTF8Encoding { public MyEncoder() { } public override byte[] GetBytes(string s) { s = s.Replace("\\", "/"); return base.GetBytes(s); } } System.IO.Compression.ZipFile.CreateFromDirectory("C:/ABC", "C:/tmp/
在我的系统上有很多 Word 文档,我想使用 Python 模块 zipfile 压缩它们. 我找到了 这个解决方案问题,但在我的系统上,有些文件的文件名中包含 German umlauts 和 Turkish characters. 我已经改编了 解决方案 像这样,所以它可以处理文件名中的德语变音符号: def zipdir(path, ziph): for root, dirs, files in os.walk(path): for file in files: current_file = os.path.join(root, file) print "Adding to archive -> file: "+str(current_file) try: #ziph.write(current_file.decode("cp1250"))
我有很多图像存储在 S3 存储桶的单个文件夹中.共有三个类别(假设 A、B 和 C),并且图像只会属于这三个类别中的一个.我在 view-all.html 页面上呈现所有图像类别.我想要做的是在 view-all.html 中每个类别的名称旁边添加一个单独的下载按钮.单击特定下载按钮后,应将仅在该类别下的图像下载为 zip 文件.目前,下载按钮不适用于任何类别. 我只编辑了 view-all.html 和 views.py 文件.我对此进行了很多搜索,但没有找到任何确切的解决方案.我不确定是否必须在任何其他文件中添加任何其他内容.请帮帮我.提前致谢. view-all.html {% extends "cms/base.html" %} {% block title %} View-all {% endblock %} {% block main %} *{box-sizing: border-box;} .wrapper{ overf
我正在使用以下代码在我的 Python34 应用程序中使用 zipFile 从用户上传的文件创建受密码保护的 zip 文件.但是当我从 Windows 打开 zip 文件时,它不会要求输入密码.稍后我将使用相同的密码从 python 读取 zip 文件.我做错了什么? 这是我的代码: pwdZipFilePath = uploadFilePath + "encryptedZipFiles/" filePath = uploadFilePath if not os.path.exists(pwdZipFilePath): os.makedirs(pwdZipFilePath) #save csv file to a path fd, filePath = tempfile.mkstemp(suffix=source.name, dir=filePath) with open(filePath, 'wb') as dest: shutil.c
如何在 Python 中创建目录结构的 zip 存档? 解决方案 正如其他人指出的,你应该使用 压缩文件.该文档告诉您哪些功能可用,但并没有真正解释如何使用它们来压缩整个目录.我认为用一些示例代码来解释是最容易的: #!/usr/bin/env python import os import zipfile def zipdir(path, ziph): # ziph is zipfile handle for root, dirs, files in os.walk(path): for file in files: ziph.write(os.path.join(root, file)) if __name__ == '__main__': zipf = zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) zipdir('tmp/', z
此代码是 Django 应用程序中代码的简化,该应用程序通过 HTTP 多部分 POST 接收上传的 zip 文件并对内部数据进行只读处理: #!/usr/bin/env python import csv, sys, StringIO, traceback, zipfile try: import io except ImportError: sys.stderr.write('Could not import the `io` module.\n') def get_zip_file(filename, method): if method == 'direct': return zipfile.ZipFile(filename) elif method == 'StringIO': data = file(filename).read() return zipfile.ZipFile(String
我想将 zip 文件的内容读入内存而不是将其提取到磁盘中,在存档中找到一个特定文件,打开该文件并从中提取一行. StringIO 实例可以打开解析吗?建议?提前致谢. zfile = ZipFile('name.zip', 'r') for name in zfile.namelist(): if fnmatch.fnmatch(name, '*_readme.xml'): name = StringIO.StringIO() print name # prints StringIO instances open(name, 'r') # IO Error: No such file or directory... 我发现了一些类似的帖子,但似乎都没有解决这个问题:Extracting a zipfile记忆? 解决方案 感谢所有提供解决方案的人.这就是最终为我工作的:
我正在尝试使用 zipfile 在 Python 上读取受密码保护的 word 文档.以下代码适用于不受密码保护的文档,但在与受密码保护的文件一起使用时会出错. try: from xml.etree.cElementTree import XML except ImportError: from xml.etree.ElementTree import XML import zipfile psw = "1234" WORD_NAMESPACE = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}' PARA = WORD_NAMESPACE + 'p' TEXT = WORD_NAMESPACE + 't' def get_docx_text(path): document = zipfile.ZipFile(path, "r") document.setpassw
这个问题有点复杂,所以请忍受我: 我有一个apk文件,我试图在安装后立即修改.我用另一个应用程序编辑它.我首先尝试用内置的Java类进行ZIP文件管理,但是当我尝试完全复制所有文件时,除了我要修改和更改我想要修改的文件之外的所有文件,我将不会再运行.我假设这是因为签名或什么,但是当我用WinRAR做同样的事情时(解压缩所有文件,创建一个新的ZIP存档,将所有文件复制到新的ZIP存档,并具有正常压缩,并将新的APK SSH进入我/数据/app文件夹,它工作正常.我的问题是为什么这发生.我认为它可能与拉链标题或类似物有任何想法的东西有关吗? ps:这是我使用的Java进程的一个例子来重写zip文件: p = Runtime.getRuntime().exec("su"); ZipInputStream in = new ZipInputStream(new FileInputStream("This is the apk containing the asset I want t
我正在寻找一种向客户端发送从请求响应生成的压缩文件的方法.在此示例中,我将 JSON 字符串发送到 url,该 url 返回转换后的 JSON 字符串的 zip 文件. @app.route('/sendZip', methods=['POST']) def sendZip(): content = '{"type": "Point", "coordinates": [-105.01621, 39.57422]}' data = {'json' : content} r = requests.post('http://ogre.adc4gis.com/convertJson', data = data) if r.status_code == 200: zipDoc = zipfile.ZipFile(io.BytesIO(r.content)) return Response(zipDoc,
我正在尝试使用 CakePhp 1.3 创建 zip 文件.文件描述存储在数据库中.在我的控制器中,我使用以下逻辑. // Fetching File description form database. $this->view = 'Media'; $user_id=$this->Session->read('userData.User.id'); $condition = "Document.isdeleted = '0' AND Document.project_id='". $project_id."'"; $projectDocumentList = $this->Document->find("all",array('conditions'=>$condition,'fields'=>array('Document.id','Document.document_name','Document.path'),'order' => ar