[Python] Socket e lettura dati

Enrico 'Henryx' Bianchi henryx_b a yahoo.it
Ven 23 Mar 2012 19:40:52 CET


Mi ritrovo con un problema rognoso nella lettura dei dati via socket. Via 
client, uso questi metodi per inviare i dati:

def get(self):
    for item in self._directory:
        for root, dirs, files in os.walk(item.encode("utf-8")):
            for directory in dirs:
                path = os.path.join(root, directory)
                yield json.dumps([path, self._compute_metadata(path)], 
                                  ensure_ascii=False)

            for filename in files:
                result = {}
                path = os.path.join(root, filename)
                result[path] = self._compute_metadata(path)
                yield json.dumps([result], ensure_ascii=False)

for item in res.get():
    conn.send(item + "\n")

Via server, uso questo codice per leggere i dati:

while True:
    data = conn.makefile().readline()
    if not data:
        break
    datajson = json.loads(data.decode("utf-8"))

Ora, il problema e` che la prima riga la leggo correttamente, dalla seconda in 
poi mi vengono riportate righe spezzate, mandando la conversione da stringa a 
JSON in pappa, con conseguente errore. Come risolvo? Ho provato anche ad usare 
recv() e a creare una stringa di buffer contenente tutte le informazioni, ma 
anche li ho problemi nella conversione in JSON in quanto si mischia tutto 
(viene una cosa del tipo '["stringa": "valore"]["stringa": "valore"]'). 
Ovviamente ogni suggerimento e` bene accetto, anche perche` se non metto a 
posto 'sta cosa non ho altre alternative se non cambiare approccio

Enrico
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        signature.asc
Tipo:        application/pgp-signature
Dimensione:  836 bytes
Descrizione: This is a digitally signed message part.
URL:         <http://lists.python.it/pipermail/python/attachments/20120323/18c9a80f/attachment.pgp>


Maggiori informazioni sulla lista Python