Python通过管道读取文件并在EOF中断

时间:2013-06-25 22:17:59

标签: python jpeg pipe eof

我目前有一个应用程序,我在其中获取一长串jpg作为字符串。我想将这个字符串分成单个文件,但我找不到任何明确的方法来识别Python中的EOF。我想这是一个相当普遍的问题,但我无法找到解决方案。字符串应该只有大约20-30 jpgs长,所以它很小,但我不知道如何识别EOF,因为我通过字符串。

我尝试分开\0,但似乎这并不能完全表明这些jpgs的EOF。

1 个答案:

答案 0 :(得分:2)

最好重新组织文件的发送,以便逐个接收它们,或者在字节流中的每个文件之间使用明确的分隔符。

如果无法做到这一点,您可以使用APPO marker and ID。因此标记可以是0xFFE0[length]0x4A465858000xFFE0[length]0x4A46494600

最佳案例:

  1. 读取流直到找到0xFFE0;
  2. 读取两个字节长度(最多65535×65535像素);
  3. 通过读取接下来的5个字节来验证格式 - 如果不是nul终止JFIF或JFXX则打破
  4. 读取该长度并处理有效载荷;
  5. 循环回1
  6. 然而,最好逐个处理每个文件。