2017-03-03 2 views
0

Je dois analyser le contenu de printfbuf ligne par ligne, comment puis-je le faire? J'ai essayé le code suivant, mais il imprime un caractère par une ligne:Lecture du contenu de la ligne tampon par ligne

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

'Essayez readlines()' – pylang

+0

Vous n'avez pas besoin 'print_buff', utilisez' printbuffer .value'. –

Répondre

2

Vous voulez readlines (au pluriel), pas readline.
readline lit une ligne et la renvoie (de sorte que vous finissez par itérer sur les caractères d'une chaîne, un à la fois), tandis que readlines renvoie chaque ligne du fichier, l'une après l'autre.
itération ligne par ligne est la valeur par défaut pour les objets de fichiers (et objets StringIO), de sorte que vous pouvez simplement utiliser

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