2009-11-24 6 views
2

파이썬을 사용하여 이진 파일의 데이터를 업데이트하는 방법을 알아 내려고하고 있습니다.파이썬으로 이진 파일의 값을 업데이트하는 중

"배열"을 사용하여 전체 파일을 읽고 쓰는 것이 이미 편하지만 위치 수정에 문제가 있습니다. 나는 위치 (100) 값을 업데이트 않습니다 위의 코드에서 바이트의 값을 변경하려면, 기본적으로

my_file.seek(100) 

my_array = array.array('B') 
my_array.append(0) 
my_array.tofile(my_file) 

을하지만, 다음 파일의 나머지 부분을 잘라 :

는 여기에 내가 무엇을 시도했다입니다. 파일에서 다른 것을 수정하지 않고 위치 100의 값을 변경할 수 있기를 원합니다.

멀티 기가 바이트 파일을 편집 중이므로 메모리 전체를 읽고 메모리를 업데이트 한 다음 디스크에 다시 쓰지 않으려합니다.

답변

5

the documentation of open()에 따르면 잘린 동작을 방지하려면 'rb+' 모드에서 파일을 열어야합니다.

+0

그게 전부였습니다. 감사! 글쓰기를 위해 파일을 여는 중이므로 'wb +'로 열었습니다. 그것이 내가 문서를 철저히 읽지 않기 위해 얻은 것입니다. –

1

'r+b' 모드에서 파일을여시겠습니까?

관련 문제