python 文件操作 write()

用python进行对.txt文件写入字符串时,字符串字节数与写入字节数有插入
首先创建一个字符串,获取字符串字节数

#   获取测试数据(一个大于4KB的字符串)
content = "python 基本句法。\npython 基本数据类型。\npython 数据类型转换。\npython 推导式。\npython 解释器。\npython 注释。\npython 运算符。\npython 数字(numbre)。\npython 字符串。\npython 列表。\npython 元组。\npython 字典。\npython 集合。\npython 条件控制。\n"
bnum = 0
while(bnum < 4096):
    bnum = sys.getsizeof(content)
    content += content
print(bnum)    

然后写入文件,获取写入的字节数

#   打开文件
f = open("实例.txt", 'w+', encoding="UTF-8")
print(f.name)
#   写入字符串,查看写入字节
bnum = f.write(content)
print(bnum)
# 检查关闭后是否清空缓冲区了 
f.close()

是输出结果

5770 - 字符串字节数
5696 - 写入字节数

想不太通,不知道内部逻辑可能。

getsizeof是实际占用的内存大小
write返回的是写入的字符串长度

sys.getsizeof(object [ , default ] )
返回对象的大小(以字节为单位)。该对象可以是任何类型。所有内建对象返回的结果都是正确的,
但对于第三方扩展不一定正确,因为这与具体实现有关。
只计算直接分配给对象的内存消耗,不计算它所引用的对象的内存消耗

>>> sys.getsizeof("a")
50
>>> sys.getsizeof("ab")
51
>>> sys.getsizeof("")
49
>>> sys.getsizeof("实例")
78
>>> sys.getsizeof("实")
76
>>> len(b"abc")
3