2013-06-25 2 views
-1

저는 현재 문자열로 긴 jpg 문자열을 얻는 응용 프로그램이 있습니다. 이 문자열을 개별 파일로 분해하고 싶지만 Python에서 EOF를 인식 할 수있는 확실한 방법을 찾을 수 없습니다. 나는이 문제가 상당히 흔한 문제라고 생각하지만이 문제에 대한 해결책을 찾지 못했습니다. 문자열은 단지 20-30 jpgs 정도되어야하므로 꽤 작습니다. 그러나 문자열을 통과 할 때 EOF를 인식하는 방법을 모르겠습니다.Python은 파이프를 통해 파일을 읽고 EOF를 깨습니다.

나는 단지 \0으로 나누어 보았지만,이 jpg는 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]0x4A46585800 또는 0xFFE0[length]0x4A46494600입니다.

최상의 경우 : 0xffe0 부분까지

  1. 읽기 스트림이 발견된다;
  2. 2 바이트 길이 (최대 65535 × 65535 픽셀)를 읽습니다.
  3. 다음 5 바이트를 읽음으로써 형식을 확인하십시오. - nul로 끝나지 않았 으면 JFIF 또는 JFXX가됩니다.
  4. 페이로드를 읽고 처리하십시오.
  5. 루프 다시 1

에 각 파일 그러나 하나 하나를 처리하기 위해 더 좋을 것이다.

관련 문제