는 방법에서 콘텐츠를 분리하는 파일은 컨테이너에 대한 바이너리고 다른 형태의 컨텐츠

StackOverflow https://stackoverflow.com/questions/822161

문제

내가 노력하고 분석하다.txt 파일이 있습니다.이러한 파일 컨테이너 역할 변수의 번호를'어린이'있는 파일을 설정하거나 식별에서 컨테이너 SGML 태그가 있습니다.Python 쉽게 할 수 있습니 별도의 어린이들이 파일이 있습니다.그러나 나는 데 문제가 쓰는 이진 콘텐츠에 다시 바이너리 파일로(말 gif 또는 jpg).에서는 가장 간단한 케이스 컨테이너가 포함된 html 파일을 다음 그래픽을 통해 호출되는 html.정 나의 문제이기 때문에 나는 독서 원래이다.txt 를 사용하여 파일을 열고(름,'r').하지만 보이는 옵션만을 찾 sgml 태그를 분할하는 파일입니다.

내가 어떤 도움을 평가하는 일부를 식별 관련 자료를 읽.

가 제안이 있지만 나는 아직도 어려움을 겪고 가장 기본적인 질문입니다.예를 들어 파일을 열 때와 워드패드와 스크롤 다운 섹션으로 태그 gif I see this:

<FILENAME>h65803h6580301.gif
<DESCRIPTION>GRAPHIC
<TEXT>
begin 644 h65803h6580301.gif
M1TE&.#EA(P)I`=4@`("`@,#`P$!`0+^_OW]_?_#P\*"@H.#@X-#0T&!@8!`0
M$+"PL"`@('!P<)"0D#`P,%!04#\_/^_O[Y^?GZ^OK]_?WX^/C\_/SV]O;U]?

저는 처리할 수 있습을 찾는 섹션에 쉽게 충분히지 않는 gif 파일이 시작됩니다.가 헤더를 시작으로 644,공백을 한 후에는 단어로 시작하거나 라인으로 시작 마?

다음 파일로 읽어들이는 파이썬은 그것이 아무것도 할 바이너리 코드가 취소될 때 그것은 다시 읽습니까?

I 을 찾을 수 있습니다 라인 그래픽을 시작:

filerefbin=file('myfile.txt','rb')
wholeFile=filerefbin.read()
import re
graphicReg=re.compile('<DESCRIPTION>GRAPHIC')
locationGraphics=graphicReg.finditer(wholeFile)
graphicsTags=[]
for match in locationGraphics:
    graphicsTags.append(match.span())

내가 쉽게 사용할 수 있는 동일한 과정을 얻을 말씀을 시작하거나 식별하는 파일 이름 및 파일의 끝에'먼저'라인입니다.또한 successefully 받은 끝에 포함된 gif 파일입니다.그러나 나는 할 수 없이 쓰는 올바른 조합의 일을 할 때 그래서 나는 더블 클릭 h65803h6580301.gif 되었을 때 절연 저장을 표시합니다.

흥미롭게도,나에서 파일을 열고 rb,라인 결말이 나타나 여전히 존재하더라도 그들은 보이지 않는 어떤 효과에 notebpad.도록 명확하게 하나의 문제해야 할 수도 있 readlines 및 가입하세인이 함께 후 제거함으로

나는이 사이트를 사랑하고 내가 사랑하는 파이썬

이 너무 쉬웠다면 내가 읽 bendin s post.나는 단지를 캡처하는 부분을 시작했다는 단어로 시작하고 저장하는 txt 파일에서 다음 다음 명령을 실행합니다.

import uu
uu.decode(r'c:\test2.txt',r'c:\test.gif')

적으로 다른 물건을 위해 하루의 나머지 하지만 나는 게시할 것입니다 더 많은 여기에 보면 이상합니다.먼저 나를 발견하기 위해 필요가 사용하는 방법 이외의 다른 파일은 이후 읽었습니다.txt 파일로 메모리 및 스크랩된 섹션은 이미지를 필요로 작업이 잘린 섹션을 쓰는 대신에 그것을 밖으로 test2.txt.나는 확신 할 수 있는 그는 방법을 알아내는 그것을 할 수 있습니다.

도움이 되었습니까?

해결책

당신은 무엇을 보고 있지 않다"바이너리"로,그것은 uuencoded.Python 의 표준 라이브러리 포함하는 모듈 uu, 을 처리하기 위해,uuencoded 데이터입니다.

모듈 uu 의 사용을 필요로 임시 파일에 대한 인코딩.이를 수행할 수 있습에 의존하지 않고 임시 파일을 사용하여 파이썬's 코덱 모듈로 이와 같은:

import codecs

data       = "Let's just pretend that this is binary data, ok?"
uuencode   = codecs.getencoder("uu")
data_uu, n = uuencode(data)
uudecode   = codecs.getdecoder("uu")
decoded, m = uudecode(data_uu)

print """* The initial input:
%(data)s
* Encoding these %(n)d bytes produces:
%(data_uu)s
* When we decode these %(m)d bytes, we get the original data back:
%(decoded)s""" % globals()

다른 팁

당신은 확실히 필요한 것을 읽기에 바이너리 모드인 경우 콘텐츠를 포함 JPEG 이미지입니다.

뿐만 아니라,Python 포함되어 있는 SGML 파서 http://docs.python.org/library/sgmllib.html .

예를 들어이없는,하지만 당신이해야 할 모든 당신이 설정 do_ 방법을 처리하는 sgml 태그습니다.

필요하신 open(filename,'rb') 을 열고 파일을 바이너리 모드입니다.는 것이 원인이됩니다 python 당신에게 혼란을 두 바이트로 줄 끝에 어떤 운영 체제입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top