python – 带二进制文件的StringIO?

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

我似乎得到了不同的输出

  1. from StringIO import *
  2. file = open('1.bmp','r')
  3. print file.read(),'\n'
  4. print StringIO(file.read()).getvalue()

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

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

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

  1. from StringIO import *
  2. file = open('1.bmp','r')
  3. print file.read(),'\n'
  4. file.close()
  5. file2 = open('1.bmp','r')
  6. print StringIO(file2.read()).getvalue()
  7. file2.close()

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

  1. from StringIO import *
  2. with open('1.bmp','r') as file:
  3. print file.read(),'\n'
  4. with open('1.bmp','r') as file2:
  5. print StringIO(file2.read()).getvalue()

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

猜你在找的Python相关文章