强制python永远不会将文件刷新到磁盘

时间:2017-03-19 06:35:22

标签: python io

我有一个场景,我使用request从网址读取文件内容。

    f = open(..., 'wb')
    for chunk in message_content.iter_content():
        f.write(chunk)

但是我不想将文件实际写入磁盘,因为我想继续操作我下载的f内容。

有没有办法告诉f永远不要写入磁盘?

2 个答案:

答案 0 :(得分:2)

您可以使用io.BytesIOio.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())