f.write()的奇怪python行为

时间:2018-04-12 09:10:19

标签: python

我正在写一些python代码,我在代码中发现了一个奇怪的行为。

这是代码:

import sys

f=open("test1","wb")
test="1000000000"
f.write(bytearray(int(test)))
f.close()

它生成文件 test1 ,长度为1000000000(1,0 GB),填充0。 这应该发生(如果是,为什么?)或是一个错误?

2 个答案:

答案 0 :(得分:1)

bytearray()函数从参数source创建一个字节数组,文档说明:

  

如果是整数,则数组将具有该大小,并将使用空字节进行初始化。

因此,您只需将10亿个空字符(\x00)写入该文件即可!

答案 1 :(得分:0)

使用单个整数值初始化bytearray会创建一个指定大小的空(即填充零)bytearraydocumented here)。因此,您的代码将字符串“1000000000”转换为整数,然后创建该大小的bytearray,并将其写入磁盘。

这种行为没有什么奇怪或令人惊讶的。