标签: zipfile

在Python中创建.zip?

我正在尝试在我的脚本中创建一个函数,将给定源目录(src)的内容压缩为zip文件(dst).例如,目录zip('/path/to/dir', '/path/to/file.zip')在哪里/path/to/dir,/path/to/file.zip但尚不存在.我希望压缩目录本身,这使得我的情况下,所有的差异.我想压缩目录中的文件(和子目录).这就是我正在尝试的:

def zip(src, dst):
    zf = zipfile.ZipFile("%s.zip" % (dst), "w")
    for dirname, subdirs, files in os.walk(src):
        zf.write(dirname)
        for filename in files:
            zf.write(os.path.join(dirname, filename))
    zf.close()
Run Code Online (Sandbox Code Playgroud)

这创建了一个基本上的zip /.例如,如果我压缩/path/to/dir,则解压缩zip会在其中创建一个带有"path"的目录,在该目录中使用"to"等.

有没有人有一个不会导致这个问题的功能?

我不能强调这一点,它需要压缩目录中的文件,而不是directoy本身.

python zip zipfile

35
推荐指数
1
解决办法
5万
查看次数

无法找到中央目录结束记录

我正在使用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.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileN
ame, String destinationDirectoryName, Encoding entryNameEncoding)
   at System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileN
ame, String destinationDirectoryName)
Run Code Online (Sandbox Code Playgroud)

这是程序

    response = (HttpWebResponse)request.GetResponse();
    Stream ReceiveStream = response.GetResponseStream();
    byte[] buffer = new byte[1024];
    FileStream outFile = new FileStream(zipFilePath, FileMode.Create);
    int bytesRead;
    while ((bytesRead = ReceiveStream.Read(buffer, 0, buffer.Length)) != 0)
        outFile.Write(buffer, 0, bytesRead);
    outFile.Close();
    response.Close();
    try
    {
        ZipFile.ExtractToDirectory(zipFilePath, destnDirectoryName);
    }
    catch …
Run Code Online (Sandbox Code Playgroud)

c# zipfile

34
推荐指数
3
解决办法
6万
查看次数

py3k:你如何读取zip文件中的文件作为文本,而不是字节?

用于读取zip文件中的CSV文件的简单程序适用于Python 2.7,但不适用于Python 3.2

$ cat test_zip_file_py3k.py 
import csv, sys, zipfile

zip_file    = zipfile.ZipFile(sys.argv[1])
items_file  = zip_file.open('items.csv', 'rU')

for row in csv.DictReader(items_file):
    pass

$ python2.7 test_zip_file_py3k.py ~/data.zip

$ python3.2 test_zip_file_py3k.py ~/data.zip
Traceback (most recent call last):
  File "test_zip_file_py3k.py", line 8, in <module>
    for row in csv.DictReader(items_file):
  File "/home/msabramo/run/lib/python3.2/csv.py", line 109, in __next__
    self.fieldnames
  File "/home/msabramo/run/lib/python3.2/csv.py", line 96, in fieldnames
    self._fieldnames = next(self.reader)
_csv.Error: iterator should return strings, not bytes (did you open the file 
in text mode?)
Run Code Online (Sandbox Code Playgroud)

所以csvPython 3中的模块想要查看文本文件,但 …

csv zipfile python-3.x

31
推荐指数
3
解决办法
9363
查看次数

如何用Python 2.4解压缩文件?

我很难弄清楚如何用2.4解压缩zip文件.extract()不包括在2.4中.我只能在我的服务器上使用2.4.4.

有人可以提供一个简单的代码示例吗?

python zip zipfile python-2.4

30
推荐指数
2
解决办法
4万
查看次数

安装.Net 4.5但不能在Visual C#中使用ZipFile类

我是Visual Studio编程的新手.

我最近将.Net 4.0升级到4.5以便在System.IO.Compression下使用ZipFile类,但是在安装完成后,Visual Studio(我使用2012)仍然无法将ZipFile识别为类名.

我确保.Net 4.5出现在控制面板程序列表中,而我的C#解决方案将.Net Framework 4设置为目标框架.

有人可以帮我解决这个问题吗?

.net c# compression zipfile visual-studio-2012

29
推荐指数
4
解决办法
5万
查看次数

使用C#压缩单个文件

我使用的是.NET 4.5,如果我尝试使用"CreateFromDirectory"压缩整个目录,ZipFile类的效果很好.但是,我只想在目录中压缩一个文件.我试着指向一个特定的文件(文件夹\ data.txt),但这不起作用.我考虑过ZipArchive类,因为它有一个"CreateEntryFromFile"方法,但似乎这只允许你创建一个现有文件的条目.

有没有办法简单地压缩一个文件而不创建一个空的zipfile(有问题),然后使用ZipArchiveExtension的"CreateEntryFromFile"方法?

**这也是假设我正在开发一个目前无法使用第三方附加组件的公司计划.

示例来自:http://msdn.microsoft.com/en-us/library/ms404280%28v=vs.110%29.aspx

        string startPath = @"c:\example\start";
        string zipPath = @"c:\example\result.zip";
        string extractPath = @"c:\example\extract";

        ZipFile.CreateFromDirectory(startPath, zipPath);

        ZipFile.ExtractToDirectory(zipPath, extractPath);
Run Code Online (Sandbox Code Playgroud)

但是如果是startPath @"c:\example\start\myFile.txt;",则会抛出目录无效的错误.

.net c# zip zipfile

29
推荐指数
3
解决办法
4万
查看次数

使用Python安全地提取zip或tar

我正在尝试将用户提交的zip和tar文件提取到目录中.为zip文件的文档extractall方法(同样用tar文件的extractall)指出,这是可能的路径是绝对的或含有..该走的目标路径之外的路径.相反,我可以使用extract自己,像这样:

some_path = '/destination/path'
some_zip = '/some/file.zip'
zipf = zipfile.ZipFile(some_zip, mode='r')
for subfile in zipf.namelist():
    zipf.extract(subfile, some_path)
Run Code Online (Sandbox Code Playgroud)

这样安全吗?some_path在这种情况下,存档中的文件是否可能在外部结束?如果是这样,我可以通过哪种方式确保文件永远不会出现在目标目录之外?

python zip tar zipfile tarfile

26
推荐指数
2
解决办法
2万
查看次数

来自ZipInputStream的ZipEntry的getInputStream(不使用ZipFile类)

如何在不使用课程的情况下获得InputStreama ?ZipEntryZipInputStreamZipFile

java inputstream zipfile zipinputstream

25
推荐指数
2
解决办法
3万
查看次数

如何删除或替换zip存档中的文件?

我正在用Python创建一个程序,它下载一组文件并将它们放入带有zipfile模块的存档中.

我已经找到了如何附加到存档,但有些情况下存档中的文件已经存在并且应该被覆盖.

目前,如果我将已存在的文件附加到存档,我会得到重复.

有谁知道如何删除档案中的文件?

python zipfile

23
推荐指数
1
解决办法
2万
查看次数

如何在python Flask框架中发送zip文件?

我有一个烧瓶服务器,它从数据库中抓取几个不同文件的二进制数据,并将它们放入python'zipfile'对象中.我想使用flask的"send_file"方法将生成的zip文件与我的代码一起发送.

我最初能够通过使用BytesIO(bin)作为send_file的第一个参数成功发送非zip文件,但由于某种原因,我不能对生成的zip文件做同样的事情.它给出了错误:

'ZipFile'没有缓冲接口.

如何使用Flask将此zip文件对象发送给用户?

这是我的代码:

@app.route("/getcaps",methods=['GET','POST'])
def downloadFiles():
    if request.method == 'POST':
        mongo = MongoDAO('localhost',27017)
        identifier = request.form['CapsuleName']
        password = request.form['CapsulePassword']
        result = mongo.getCapsuleByIdentifier(identifier,password)
        zf = zipfile.ZipFile('capsule.zip','w')
        files = result['files']
        for individualFile in files:
            data = zipfile.ZipInfo(individualFile['fileName'])
            data.date_time = time.localtime(time.time())[:6]
            data.compress_type = zipfile.ZIP_DEFLATED
            zf.writestr(data,individualFile['fileData'])
        return send_file(BytesIO(zf), attachment_filename='capsule.zip', as_attachment=True)
    return render_template('download.html')
Run Code Online (Sandbox Code Playgroud)

python http zipfile flask

22
推荐指数
1
解决办法
2万
查看次数