python – 带二进制文件的StringIO?

前端之家收集整理的这篇文章主要介绍了python – 带二进制文件的StringIO?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我似乎得到了不同的输出

from StringIO import *

file = open('1.bmp','r')

print file.read(),'\n'
print StringIO(file.read()).getvalue()

为什么?是因为StringIO只支持文本字符串或其他东西吗?

最佳答案
当你调用file.read()时,它会将整个文件读入内存.然后,如果再次在同一个文件对象上调用file.read(),它将已经到达文件的末尾,因此它只返回一个空字符串.

相反,尝试例如重新打开文件

from StringIO import *

file = open('1.bmp','r')
print file.read(),'\n'
file.close()

file2 = open('1.bmp','r')
print StringIO(file2.read()).getvalue()
file2.close()

您还可以使用with语句使代码更清晰:

from StringIO import *

with open('1.bmp','r') as file:
    print file.read(),'\n'

with open('1.bmp','r') as file2:
    print StringIO(file2.read()).getvalue()

顺便说一句,我建议以二进制模式打开二进制文件:open(‘1.bmp’,’rb’)

原文链接:https://www.f2er.com/python/439445.html

猜你在找的Python相关文章