2016-08-23 75 views
0

OSX上運行此有關Python 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某種原因導致它開始在開頭插入額外的零個字節?爲什麼?

回答

3

truncate不移動文件指針。所以下一個字節被寫入下一個位置。你還尋求開頭:

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

相關的文檔是[這裏](https://docs.python.org/3/library/io.html#io.IOBase.truncate)。請注意,它也讀取「(在大多數系統上,附加字節爲零填充)」 –