2017-03-03 109 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