繁体   English   中英

用python将二进制数据写入zip文件

[英]Write Binary data with python to a zip file

我想将二进制数据写入 zip 文件。

下面的工作,但如果我尝试添加一个.zip作为文件扩展名来“检查”变量x任何内容都不会写入文件。 我被卡在手动添加.zip

urla = "some url"
tok = "some token"
pp = {"token": tok}
t = requests.get(urla, params=pp)
b = t.content
x = r"C:\temp" + "\check"
z = 'C:\temp\checks.zip'
with open(x, "wb") as work:
     work.write(b)

为了将正确的扩展名附加到文件中,我尝试使用模块ZipFile

with ZipFile(x, "wb") as work:
    work.write(b)

但得到一个RuntimeError

RuntimeError: ZipFile() requires mode "r", "w", or "a"

如果我删除b标志,则会创建一个空的 zipfile 并且我收到TypeError

TypeError: must be encoded string without NULL bytes, not str

我也尝试过,但它创建了一个损坏的 zipfile。

os.rename(x, z ) 

如何将二进制数据写入 zip 文件。

您不会将数据直接写入 zip 文件。 您将其写入文件,然后将文件路径写入 zip 文件。

binary_file_path = '/path/to/binary/file.ext'
with open(binary_file_path, 'wb') as f:
    f.write('BINARYDATA')

zip_file_path = '/path/to/zip/file.zip'
with ZipFile(zip_file_path, 'w') as zip_file:
    zip_file.write(binary_file_path)

我将 zip 文件转换为二进制数据,并能够通过以下方式重新生成 zip 文件:

bin_data=b"\x0\x12" #Whatever binary data you have store in a variable
binary_file_path = 'file.zip' #Name for new zip file you want to regenerate
with open(binary_file_path, 'wb') as f:
    f.write(bin_data)

使用writestr方法。

import zipfile
z = zipfile.ZipFile(path, 'w')
z.writestr(filename, bytes)
z.close()

zipfile.ZipFile.writestr

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM