[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