2014-06-30 3 views
-1

파이썬에서 바이너리 파일을 텍스트/문자열로 파싱하려고합니다. 나는 파일 형식에 대해 긍정적이지 않으므로 이진 파일이라고 가정합니다. 기본적으로 MS regedit에서 내 보낸 키 (* .reg)입니다. Notepad++에서 열쇠를 열면 쉽게 읽을 수 있습니다. 그러나 파이썬 (특히 iPython Notebook)에서 행을 반복하려고하면 gobbledygook가 인쇄됩니다.파이썬 바이너리? to Text/String

InFile = open("F:\Uninstallkey.reg","r") 

for line in InFile: 
    print "%r" % (line) 

InFile.close() 

출력은 :

++ 메모장에서
'\xff\xfeW\x00i\x00n\x00d\x00o\x00w\x00s\x00 \x00R\x00e\x00g\x00i\x00s\x00t\x00r\x00y\x00 \x00E\x00d\x00i\x00t\x00o\x00r\x00 \x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00 \x005\x00.\x000\x000\x00\r\x00\n' 
'\x00\r\x00\n' 
'\x00[\x00H\x00K\x00E\x00Y\x00_\x00L\x00O\x00C\x00A\x00L\x00_\x00M\x00A\x00C\x00H\x00I\x00N\x00E\x00\\\x00S\x00O\x00F\x00T\x00W\x00A\x00R\x00E\x00\\\x00M\x00i\x00c\x00r\x00o\x00s\x00o\x00f\x00t\x00\\\x00W\x00i\x00n\x00d\x00o\x00w\x00s\x00\\\x00C\x00u\x00r\x00r\x00e\x00n\x00t\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\\\x00U\x00n\x00i\x00n\x00s\x00t\x00a\x00l\x00l\x00]\x00\r\x00\n' 
'\x00\r\x00\n' 

:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall] 

이상하게도, iPython에 제대로 인쇄 :

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall] 

길고도 짧은 이야기, 어떻게 다음은 샘플입니다 파일 형식을 d 어떻게 파일을 변환하여 텍스트로 인쇄/파싱 할 수 있습니까?

답변

3

위의 파일은 utf-16입니다. 다음은 인코딩으로 파일을 여는 쉬운 방법입니다.

import codecs 
InFile = codecs.open(path_to_registry, encoding='utf-16') 
+0

나중에 참조 할 수 있도록 인코딩을 어떻게 결정 했습니까? – James

+0

@TechMedicNYC Google :-) – jaime

2

파일은 단순히 작은 엔디안 UTF-16로 인코딩 된 일반 텍스트 파일을 것으로 보인다. 대신 일반 open 기능을 사용하는 "UTF-16LE"encoding 인수 io.open로 파일을 엽니 다.

+0

정말요? '✊✊ 嬀 䠀 䬀 䔀 夀 开 䰀 伀 䌀 䄀 䰀 开 䴀 䄀 䌀 䠀 䤀 一 䔀 尀 匀 伀 䘀 吀 圀 䄀 刀 䔀 尀 䴀 椀 挀 爀 漀 猀 漀 昀 琀 尀 圀 椀 : 16LE 같은 디코딩 결과渀 搀 漀 眀 猀 尀 䌀 甀 爀 爀 攀 渀 琀 嘀 攀 爀 猀 椀 漀 渀 尀 唀 渀 椀 渀 猀 琀 愀 氀 氀 崀 ഀ ਀ਧ' –

+0

@BurhanKhalid : 나는 당신이 빅 엔디안 (UTF-16BE을 선택 생각) 리틀 엔디안 대신. – jwodder

+0

'>>> 인쇄 (z.decode ("UTF-16LE ')) ✊✊ 嬀 䠀 䬀 䔀 夀 开 䰀 伀 䌀 䄀 䰀 开 䴀 䄀 䌀 䠀 䤀 一 䔀 尀 匀 伀 䘀 吀 圀 䄀 刀 䔀 尀䴀 椀 挀 爀 漀 猀 漀 昀 琀 尀 圀 椀 渀 搀 漀 眀 猀 尀 䌀 甀 爀 爀 攀 渀 琀 嘀 攀 爀 猀 椀 漀 渀 尀 唀 渀 椀 渀 猀 琀 愀 氀 氀 崀 ഀ ਀ਧ'' –

관련 문제