2013-03-30 2 views
1

파일을 가져 와서 내용을 16 진수로 변환하고 파일에 저장하려고 시도한 다음 16 진수 문자열을 ASCII로 다시 변환하여 파일에 저장하려고합니다. 아래의 방법은 =========== ...File to Hex to Python 2.7

import binascii 
    filename = 'file.txt' 
    with open(filename, 'rb') as f: 
     content = f.read() 
    out = binascii.hexlify(content) 

    f = open('out.txt', 'w') 
    f.write(out) 
    f.close() 

    asci = out.decode("hex") 
    w = open('printed.txt', 'w') 
    w.write(asci) 
    w.close() 

작동하지만 초기 파일과 동일해야합니다 아스키 파일에 진수, 그 어느 라인 후 여분의 빈 줄을 추가 ========================================================================================================== =========================

실제로 파이썬 문서를 읽은 후에, 나는 실수를 깨달았다. 코드는 다음과 같아야합니다. 키 이진 쓰기 모드 개방 파일을 가지고, 개방 명령에 상기 "w"에 첨부 된 "B"를 추가 하였다

import binascii 
filename = 'file.txt' 
with open(filename, 'rb') as f: 
    content = f.read() 
out = binascii.hexlify(content) 

f = open('out.txt', 'wb') 
f.write(out) 
f.close() 

import binascii 
filename = 'out.txt' 
with open(filename, 'rb') as f: 
    content = f.read() 
asci = content.decode("hex") 

asci = out.decode("hex") 
w = open('printed.txt', 'wb') 
w.write(asci) 
w.close() 

을 (다소 변화된합니다 ... out.txt로부터 판독하기 위해). ..

답변

1

str.decode을 사용하는 대신 binascii.unhexlify을 사용해보세요. decode은 line-breaks의 번역을 약간 다르게 할 수 있습니다. 처리 방법은 '\r\n''\n'입니다.