def readlines(f, bufsize):
buf = ""
data = True
while data:
data = f.read(bufsize)
buf += data
lines = buf.split('\x00')
buf = lines.pop()
for line in lines:
yield line + '\x00'
yield buf + '\x00'
然后你可以做些
with open('myfile', 'rb') as f:
mylist = [item for item in readlines(f, 524288)]
虽然它可以归结为使用
split('\x00')
一个方便的包装器可能很好。然后你可以做些
这样做的另一个好处是,在拆分文本之前不需要将整个内容加载到内存中。
Python不把NUL字节当作任何特殊的东西;它们与空格或逗号没有区别。所以,^{} 工作得很好:
注意
split
将\x00
视为分隔符,而不是终止符,因此我们在末尾得到一个额外的空字符串。如果这是个问题,你可以把它切掉:要检查字符串是否有空字节,只需使用
in
运算符,例如:要找到它的位置,请使用^{} ,它将返回找到sub string sub的字符串中的最低索引。然后使用可选参数start和end表示切片。
相关问题 更多 >
编程相关推荐