标签: zipfile

如何在Python中仅列出zip存档中的文件夹?

如何仅列出zip存档中的文件夹?这将列出存档中的每个folfder和文件:

import zipfile
file = zipfile.ZipFile("samples/sample.zip", "r")
for name in file.namelist():
    print name
Run Code Online (Sandbox Code Playgroud)

谢谢.

python directory zipfile

7
推荐指数
3
解决办法
6695
查看次数

使用ExpressJS发送生成的zip文件

我正在使用NodeJS服务器中的express模块​​生成一个zip文件.快递服务器正在响应许多请求,所以我知道这是正确设置的,但是我在生成zip文件并将其作为可下载文件发回时遇到了问题.

我不想保存文件,然后告诉Express将该文件作为下载发送,我只想将zip文件作为内存中的数据发送.这是我到目前为止所拥有的.

function buildZipFile(data, filename) {
    var zip = new require('node-zip')();
    zip.file(filename, data, { base64: false });
    return zip.generate();
}

var data = buildZipFile('hello world', 'hello.txt');
res.set('Content-Type', 'application/zip')
res.set('Content-Disposition', 'attachment; filename=file.zip');
res.set('Content-Length', data.length);
res.end(data, 'binary');
return;
Run Code Online (Sandbox Code Playgroud)

该文件将返回,但windows unzip或7zip都无法打开存档,就好像它已损坏一样.有什么建议?先感谢您.

attachment zipfile node.js express

7
推荐指数
1
解决办法
9734
查看次数

Flask:如何向客户端发送动态生成的zipfile

我正在寻找一种方法将zipfile发送到客户端,该方法是从请求响应生成的.在此示例中,我将一个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,
                mimetype='application/zip',
                headers={'Content-Disposition':'attachment;filename=zones.zip'})
Run Code Online (Sandbox Code Playgroud)

但是我的zip文件是空的,而烧瓶返回的错误是

Debugging middleware caught exception in streamed response at a point where response 
headers were already sent
Run Code Online (Sandbox Code Playgroud)

python json zipfile flask

7
推荐指数
1
解决办法
6586
查看次数

使用openpyxl模块写入电子表格会创建一个损坏的电子表格,如何修复zipfile模块?

我有一个程序使用写入电子表格openpyxl.执行程序后,单元格按预期填充,但电子表格会损坏.Excel修复电子表格,然后我可以再次查看它.

import openpyxl
from openpyxl import load_workbook
amounts, row = [1, 2, 3, 4, 5], 2
book = load_workbook("output.xlsx")
sheet = book.active

for i, value in enumerate(amounts):
    sheet.cell(column=i+1, row=row, value=value)  
print ("Sheet updating complete.")
book.save("output.xlsx")
Run Code Online (Sandbox Code Playgroud)

我尝试使用Microsoft的Open XML SDK Productivity Tool来比较好的和坏的文件,并注意到它styles.xml丢失了.我尝试使用我从另一个问题中获得的以下源代码复制它,但它并没有为我解决问题.

import zipfile
with zipfile.ZipFile('outputcopy.xlsx', 'r') as zgood:
    styles_xml = zgood.read('xl/styles.xml')
with zipfile.ZipFile('output.xlsx', 'a') as zbad:
    zbad.writestr('xl/styles.xml', styles_xml)
Run Code Online (Sandbox Code Playgroud)

我可以从Excel生成的修复日志中确认,问题出在哪里xl/styles.xml.我需要将这个xml文件从好副本复制到坏副本.

如何xl/styles.xml复制文件以便程序可以在不损坏的情况下运行output.xlsx

我已经再次尝试解决这个问题.在styles.xml无法从不同的Excel文件中复制的概率; 我styles.xml从前开output.xlsxbook.save("output.xlsx").保存之后,我会styles.xml …

python excel zipfile python-3.x openpyxl

7
推荐指数
1
解决办法
1503
查看次数

如何在 .net framework 4.0 中压缩文件夹

如何使用 vb.net 和 .net framework 4.0 压缩文件夹。我可以通过使用框架 4.5 中提供的 ZipFile 类来做到这一点,但我只需要使用框架 4.0,也不需要第三方库。请帮忙

.net vb.net zip .net-4.0 zipfile

7
推荐指数
1
解决办法
7928
查看次数

从zipfile重命名解压缩的文件

我在Linux服务器上有很多压缩文件,每个文件包含多个文本文件.

我想要的是提取一些文本文件,这些文件在压缩文件中具有相同的名称并将其保存为文件夹; 我正在为每个压缩文件创建一个文件夹,并将文本文件解压缩到它.我需要将父压缩文件夹名称添加到文件名的末尾,并将所有文本文件保存在一个目录中.例如,如果压缩文件夹是March132017.zip并且我提取了holding.txt,那么我的文件名将是holding_march13207.txt.

我的问题是我无法更改提取文件的名称.如果你能提出建议,我将不胜感激.

import os 
import sys 
import zipfile
os.chdir("/feeds/lipper/emaxx") 

pwkwd = "/feeds/lipper/emaxx" 

for item in os.listdir(pwkwd): # loop through items in dir
    if item.endswith(".zip"): # check for ".zip" extension
        file_name = os.path.abspath(item) # get full path of files
        fh = open(file_name, "rb")
        zip_ref = zipfile.ZipFile(fh)

        filelist = 'ISSUERS.TXT' , 'SECMAST.TXT' , 'FUND.TXT' , 'HOLDING.TXT'
        for name in filelist :
            try:
                outpath = "/SCRATCH/emaxx" + "/" + os.path.splitext(item)[0]
                zip_ref.extract(name, outpath)

            except KeyError:
                {}

        fh.close()
Run Code Online (Sandbox Code Playgroud)

python zipfile

7
推荐指数
3
解决办法
7078
查看次数

使用 node.js 核心 zlib 模块压缩成 .zip 文件

如何.zip使用提供的 node.js zlib模块压缩一个/多个文件并保存到扩展文件中?我想出了如何.gz使用 gzip保存,如下所示:

const gzip = zlib.createGzip();
const fs = require('fs');
const input = fs.createReadStream('myfile.txt');
const out = fs.createWriteStream('myfile.txt.gz');

input.pipe(gzip).pipe(out);
Run Code Online (Sandbox Code Playgroud)

zlib zipfile node.js

7
推荐指数
0
解决办法
3800
查看次数

为什么numpy.savez()输出不可重现的文件?

该函数numpy.savez()允许将numpy对象存储在文件中.将同一对象存储在两个文件中会产生两个不同的文件:

import numpy as np
some_array = np.arange(42)
np.savez('/tmp/file1', some_array=some_array)
np.savez('/tmp/file2', some_array=some_array)
Run Code Online (Sandbox Code Playgroud)

这两个文件不同:

$ diff /tmp/file1.npz /tmp/file2.npz 
Binary files /tmp/file1.npz and /tmp/file2.npz differ
Run Code Online (Sandbox Code Playgroud)

为什么文件不相同?是否包含一些随机行为,文件名或时间戳?这可以解决或修复吗?(这是一个错误?)

请注意,情况并非如此np.save().生成的文件np.save()对于相同的输入是相同的.所以我猜这与数据的压缩有关.

AFAICS只有两位不同:

$ xxd /tmp/file1.npz > /tmp/file1.hex
$ xxd /tmp/file2.npz > /tmp/file2.hex
$ diff -u0 /tmp/file1.hex /tmp/file2.hex    
--- /tmp/file1.hex      2018-03-13 13:39:12.235897095 +0100
+++ /tmp/file2.hex      2018-03-13 13:39:08.743927081 +0100
@@ -1 +1 @@
-0000000: 504b 0304 1400 0000 0000 ce6c 6d4c 9c9d  PK.........lmL..
+0000000: 504b 0304 1400 0000 0000 cf6c 6d4c 9c9d …
Run Code Online (Sandbox Code Playgroud)

python numpy zipfile

7
推荐指数
1
解决办法
252
查看次数

从 zip 打开文件而不用 Python 解压它?

我正在编写一个使用 tje 请求库从 URL 获取 zip 文件的脚本。该 zip 文件包含一个 csv 文件。我正在尝试读取该 csv 文件而不保存它。但是在解析时它给了我这个错误:_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

import csv
import requests
from io import BytesIO, StringIO
from zipfile import ZipFile

response = requests.get(url)
zip_file = ZipFile(BytesIO(response.content))
files = zip_file.namelist()
with zip_file.open(files[0]) as csvfile:
    csvreader = csv.reader(csvfile)

    # _csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

    for row in csvreader:
        print(row)
Run Code Online (Sandbox Code Playgroud)

python zipfile

7
推荐指数
1
解决办法
5547
查看次数

从S3读取ZIP文件而不下载整个文件

我们的ZIP文件大小为5-10GB.典型的ZIP文件有5-10个内部文件,每个文件大小为1-5 GB,未压缩.

我有一套很好的Python工具来读取这些文件.基本上,我可以打开文件名,如果有ZIP文件,工具搜索ZIP文件,然后打开压缩文件.这一切都相当透明.

我想将这些文件存储在Amazon S3中作为压缩文件.我可以获取S3文件的范围,因此应该可以获取ZIP中心目录(它是文件的末尾,所以我只能读取最后的64KiB),找到我想要的组件,下载它,然后直接流到调用过程.

所以我的问题是,我如何通过标准的Python ZipFile API来做到这一点?没有记录如何用支持POSIX语义的任意对象替换文件系统传输.如果不重写模块,这可能吗?

python amazon-s3 zipfile boto boto3

7
推荐指数
2
解决办法
1469
查看次数