2016-08-23 9 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)です:あなたは、最初に求めることもあります。 「(ほとんどのシステムでは、追加のバイトはゼロで埋められます」) –

関連する問題