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

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a