2015-04-23 80 views
0

我想在python 3中将UTF-8字符串拆分为字节。问题是,当我使用bytearray,byte,encode等函数时,我总是得到一个大小为元素14字节,而不是我预期的1字节。我需要将任何文本文件拆分为字节序列并使用套接字在字节后发送字节。我试过这样的:在Python中将utf-8字符串拆分为字节

infile = open (file, "r") 
str = infile.read() 
byte_str = bytes(str, 'UTF-8') 
print("size of byte_str",sys.getsizeof(byte_str[0])) 

打印给我14,但我需要1 ...任何建议?

+0

您可以使用'rb'打开文件以获取读取的字节对象。 – tynn

回答

1

引用official documentation

sys.getsizeof(object[, default]) 

返回以字节为单位的对象的大小。该对象可以是任何类型的 对象。所有内置对象都会返回正确的结果,但此 不必适用于第三方扩展,因为它是 实现特定的。

只有直接归因于该对象的内存消耗是 的原因,而不是它引用的对象的内存消耗。

如果给定,如果对象没有提供 意味着检索大小,将返回默认值。否则会引发TypeError。

getsizeof()调用对象的方法__sizeof__如果对象是由 垃圾收集器管理增加了一个附加的 垃圾收集器的开销。

递归地使用getsizeof() 以查找容器及其所有内容的大小的示例,请参阅recursive sizeof recipe。