2017-03-03 129 views
0

我必须逐行解析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

尝试'readlines方法()' – pylang

+0

你不需要'print_buff',用'printbuffer .value'。 –

回答

2

你想readlines(复数),而不是readline
readline读取一行并将其返回(因此您可以逐个迭代字符串中的字符,而一次一个),而readlines会一个接一个地返回该文件的每一行。
行由行迭代的文件对象(和StringIO的对象)的默认,所以你可以只使用

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