Python中f.write()生成超大全0文件的异常行为咨询
这是预期行为,不是Bug!
这完全是Python的正常表现,不是bug哦~咱们来一步步拆解你代码里的逻辑:
1. 核心代码bytearray(int(test))的作用
- 首先
int(test)把字符串"1000000000"转换成了整数1000000000(也就是10亿) - 当你给
bytearray()传入一个整数参数时,Python的规则是:创建一个长度等于该整数的字节数组,并且数组里的每一个字节都会被初始化为0x00(二进制的0)
2. 写入文件的结果自然是全0的1GB文件
因为你生成的bytearray本身就是10亿个0字节,当你用f.write()把它写入文件时,自然就会生成一个大小为1000000000字节(约1GB)、内容全是0的文件。
3. 如果你想实现其他效果(比如写入数字本身的字节)
如果你的初衷是把数字"1000000000"以字节形式写入文件(而不是生成一堆0),可以试试这两种方式:
- 把字符串直接编码成字节:
test.encode('utf-8'),这样写入的是"1000000000"的UTF-8编码(对应字节是b'1000000000') - 把整数转换成指定长度的字节序列:比如
int(test).to_bytes(4, byteorder='big'),会把10亿转成4字节的大端格式整数(对应字节是b'\x3b\x9a\xca\x00')
内容的提问来源于stack exchange,提问作者Ofey
相关产品推荐
相关产品推荐

