2013-06-25 35 views
-1

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

我试图分裂\0,但它似乎并不完全表明这些jpgs的EOF。

+0

我很困惑,你试图分割一个字符串或一堆文件的数据? – Andenthal

+0

有关输入数据如何表示的更多详细信息以及如何利用此应用程序(这些应用程序在您的代码中提供数据)将会有所帮助。 – 2rs2ts

+2

[这是3.5英寸的空白磁带,后面跟着ASCII字符13](http://en.wikipedia.org/wiki/End-of-file) – dawg

回答

2

重构文件的发送将会更好,以便您可以逐个接收它们,或者在字节流中的每个文件之间使用明确的分隔符。

如果这不可能,可能的话,您可以使用APPO marker and ID。所以标记将是0xFFE0[length]0x4A465858000xFFE0[length]0x4A46494600

最好的情况:

  1. 读取流,直到0xFFE0被发现;
  2. 读取两个字节长度(高达65535×65535像素);
  3. 通过读取接下来的5个字节来验证格式 - 如果没有终止则终止JFIF或JFXX
  4. 读取该长度并处理有效载荷;
  5. 循环回1

这将是更好地应对每一个文件一个接一个。然而。