2009-08-24 11 views
8

이미지 파일을 열고 바이트 단위로 16 진수 값을 추가하고 싶습니다. 나는 이것을 어떻게하고 "파이썬 바이트 편집"과 "파이썬 바이트 배열"을 검색하는지 전혀 모르는 채 놀랍게도 아무 것도 생각 나지 않았습니다. 누군가 내가 사용할 수있는 도서관, 특정 방법, 구글 또는 튜토리얼/가이드를 가르쳐 줄 수 있습니까?Python - 바이트 단위로 16 진수 파일을 편집하는 방법

+0

프로그래밍 방식으로 수행하고 싶은 프로그램입니까? 아니면 16 진수 편집기를 찾고 있습니까? –

+0

@ david : 나는 그것을 프로그래밍 방식으로하고 싶다고 생각한다. 내 사용자 지정 이미지 파일에는 각 픽셀을 정의하는 7 가지 차원이 있으며 기본적으로 7 가지 차원 모두에서 증가함으로써 하나의 청크로 구성됩니다. 나는 그것을 취소하고, 7 개의 모든 차원을 분리하고, 재구성하여 이미지의 TIF 파일 사양에 맞도록하고 싶습니다. 나는 그것이 프로그래밍 방식으로 가장 잘 될 것이라고 생각한다. – sepiroth

+0

PIL 라이브러리를 통해 TIFF 부분을 할 것입니다. – Nelson

답변

8

파이썬 표준 라이브러리에는 mmap 모듈이있어이를 정확히 수행 할 수 있습니다. 더 자세한 정보는 the documentation을보십시오. 당신이 open the file in binary mode에 충분 정상 file 기능으로 데이터를 읽을 수있는 수행하려는 작업에 따라

+1

+1. 일반적으로 sth의 대답처럼 편집하기 위해 메모리에 파일을로드하지만 파일이 매우 길면 mmap이 더 좋습니다. 물론 파일이 매우 길고 주소 공간에 맞지 않으면 다시 열립니다 (경로, 'r + b'). 그러면 seek() ... – bobince

+0

@bobince : 당신의 어떤 지점에서 의견은 파일이 "너무 길어서"sth의 대답으로 가서 mmap 위로 이동하지 않을까요? – sepiroth

+0

@hatorade : 표준 열기/읽기/닫기는 사용 가능한 메모리만큼 파일을 처리 할 수 ​​있지만 수정 한 페이지 만 디스크에서 읽을 수 있기 때문에 mmap()을 사용하면 성능이 향상됩니다. 나는 파일이 메가 바이트 정도를 넘을 때 명백한 성능 차이가있을 것이라고 예상 할 수있다. –

4

Hachoir 프레임 워크는 바이너리 파일을 구문 분석하고 편집 할 수 파이썬 라이브러리와 도구의 집합입니다 :

http://pypi.python.org/pypi/hachoir-core

그것은 일반적인 파일 형식의 지식을 가지고, 그래서 이것은 당신이 필요로 될 수 있습니다.

10

:

# load it 
f = open("somefile", 'rb') 
data = f.read() 
f.close() 

# do something with data 
data.reverse() 

# save it 
f = open("somefile.new", 'wb') 
f.write(data) 
f.close() 

파이썬은 정말 data 문자열이 포함 된 경우 상관하지 않는다 ","이진 "또는 텍스트 "데이터. 합리적인 크기의 파일을 간단하게 수정하려면이 방법이 유용 할 것입니다.

+0

네, 그냥 사용자 정의 이미지 파일을 열어 .tiff로 변환하고 싶습니다. 기본적으로 사용자 정의 이미지 파일의 픽셀 데이터를 할당하고 .tif 사양에 따라 다시 구성하는 알고리즘을 "실행 취소"하고 있기 때문에 이것이 트릭 일 수 있습니다. – sepiroth

1

stuct 모듈을 확인하십시오.

이 모듈은 파이썬 값과 파이썬 문자열로 표현 된 C 구조체 사이의 변환을 수행합니다. 이것은 C 구조체의 레이아웃과 Python 값으로 /부터 의도 된 변환에 대한 간략한 설명으로 형식 문자열 (아래에서 설명 함)을 사용합니다. 이것은 파일이나 네트워크 연결과 같은 다른 소스에서 저장된 이진 데이터를 처리하는 데 사용할 수 있습니다.