2016-08-23 15 views
0

OSX에 파이썬 3.5.1에서이 작업을 실행 :왜 BytesIO를 잘라내는 것이 엉망이됩니까?

import io 

b = io.BytesIO() 

b.write(b'222') 
print(b.getvalue()) 

b.truncate(0) 
b.write(b'222') 
print(b.getvalue()) 

가 생산 :

b'222' 
b'\x00\x00\x00222' 

그래서 어떻게 든 BytesIO를 잘라내는 처음에 추가 0 바이트를 삽입하기 시작하는 원인은? 왜?

답변

3

truncate 파일 포인터가 이동하지 않습니다. 따라서 다음 바이트는 다음 위치에 기록됩니다. 당신은 처음으로 추구 할 수도 있습니다

b.seek(0) 
b.truncate() 
+0

관련 문서는 [여기]입니다 (https://docs.python.org/3/library/io.html#io.IOBase.truncate). "(대부분의 시스템에서 추가 바이트는 0으로 채워짐)"라고 읽습니다. –