逐行读取缓冲区的内容

时间:2017-03-03 02:05:49

标签: python ctypes readline

我必须逐行解析printfbuf的内容,我该怎么办? 我尝试了以下代码,但每行打印一个字符:

import StringIO
import ctypes

printbuffer = ctypes.create_string_buffer(100000)
print_buff = ctypes.c_char_p(ctypes.addressof(printbuffer))

buf = StringIO.StringIO(print_buff)
for x in buf.readline():
    print(x)

1 个答案:

答案 0 :(得分:2)

您需要readlines(复数),而不是readline readline读取一行并返回它(所以你最终迭代一个字符串中的字符,一次一个),而readlines一个接一个地返回文件的每一行。
逐行迭代是文件对象(和StringIO对象)的默认值,因此您可以使用

for x in buf:
    print(x)  # you may want to print x[:-1] to avoid extra newlines