我似乎得到了不同的输出:
from StringIO import *
file = open('1.bmp','r')
print file.read(),'\n'
print StringIO(file.read()).getvalue()
为什么?是因为StringIO只支持文本字符串或其他东西吗?
最佳答案
当你调用file.read()时,它会将整个文件读入内存.然后,如果再次在同一个文件对象上调用file.read(),它将已经到达文件的末尾,因此它只返回一个空字符串.
原文链接:https://www.f2er.com/python/439445.html相反,尝试例如重新打开文件:
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’)