将带有 python 的二进制数据写入 zip 文件
Write Binary data with python to a zip file
我想将二进制数据写入 zip 文件。
以下有效,但如果我尝试将 .zip
作为文件扩展名添加到变量 x
中的 "check",则不会向文件写入任何内容。我无法手动添加 .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
标志,则会创建一个空的 zip 文件,我会得到一个 TypeError
:
TypeError: must be encoded string without NULL bytes, not str
我也试过了,但它创建了一个损坏的 zip 文件。
os.rename(x, z )
如何将二进制数据写入 zip 文件。
您没有将数据直接写入 zip 文件。您将其写入文件,然后将 filepath 写入 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()
我想将二进制数据写入 zip 文件。
以下有效,但如果我尝试将 .zip
作为文件扩展名添加到变量 x
中的 "check",则不会向文件写入任何内容。我无法手动添加 .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
标志,则会创建一个空的 zip 文件,我会得到一个 TypeError
:
TypeError: must be encoded string without NULL bytes, not str
我也试过了,但它创建了一个损坏的 zip 文件。
os.rename(x, z )
如何将二进制数据写入 zip 文件。
您没有将数据直接写入 zip 文件。您将其写入文件,然后将 filepath 写入 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()