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
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Python mailing list [email protected] http://lists.python.it/mailman/listinfo/python
