[英]Write binary data from a string to a binary file
I have a torrent file obtained by using requests.get()
stored in a string and obtained like this:我有一个通过使用
requests.get()
获得的种子文件存储在一个字符串中,并像这样获得:
import requests
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept-Charset': 'utf-8',
'Connection': 'keep-alive'}
request = requests.get(url, headers=headers)
data = requests.text
I would like to write it to a binary file so that the data within it are correct and it is valid:我想将其写入二进制文件,以便其中的数据正确且有效:
with open(name, "wb") as f:
f.write(data)
However I seem to not be able to write the string as pure binary data because python keeps trying to interpret it as Unicode and I get errors like: "UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-9: ordinal not in range (128)
.但是,我似乎无法将字符串写为纯二进制数据,因为 python 一直试图将其解释为 Unicode,并且出现如下错误:
"UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-9: ordinal not in range (128)
。
I have attempted to use bytearray but a similar problem arises: TypeError: unicode argument without an encoding
.我曾尝试使用 bytearray 但出现了类似的问题:
TypeError: unicode argument without an encoding
。
Is there a way to just write the bytes in the string to a file as they are?有没有办法将字符串中的字节按原样写入文件?
response.content
, not response.text
.response.content
,而不是response.text
。"wb"
to open the file for binary output."wb"
打开二进制输出文件。 Sample program:示例程序:
import requests
r = requests.get("http://httpbin.org/image/png")
with open("image.png", "wb") as out_file:
out_file.write(r.content)
A slightly fancier program with a smaller memory footprint for ginormous files:一个稍微高级一点的程序,对于巨大的文件占用的内存更小:
import requests
import shutil
r = requests.get("http://httpbin.org/image/png", stream=True)
with open("image.png", "wb") as out_file:
shutil.copyfileobj(r.raw, out_file)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.