我有一个场景,我使用request
从网址读取文件内容。
f = open(..., 'wb')
for chunk in message_content.iter_content():
f.write(chunk)
但是我不想将文件实际写入磁盘,因为我想继续操作我下载的f
内容。
有没有办法告诉f
永远不要写入磁盘?
答案 0 :(得分:2)
您可以使用io.BytesIO
或io.StringIO
代替真实文件对象,因为除了将内容写入内存而不是文件外,它们的工作方式与文件类似。
f = io.BytesIO() # Use `io.StringIO` if you want text mode (not binary mode)
for chunk in message_content.iter_content():
f.write(chunk)
BTW,您可以使用writelines
代替循环+ write
:
writelines(lines)
将一个行列表写入流中。行分隔符 没有添加,所以提供的每条线通常都有 最后的行分隔符。
f.writelines(message_content.iter_content())
答案 1 :(得分:0)
只需收集二进制对象中的所有块。无需涉及文件。
result = b''
for chunk in message_content.iter_content():
result += chunk
或者:
result = b''.join(message_content.iter_content())