Re: [Python] dati da socket - lettura riga per riga
2015-11-27 7:01 GMT+01:00 Matteo Boscolo: > Il 26/11/2015 22:21, Luca Zucchelli ha scritto: >> >> for line in stringdata: >> print(line) > > da quello che capisco io sringdata e una stringozza.. per cui se la usi nel > loop ti da carattere per carattere.. > > invece che memorizzare la stringa in questo modo > > while True: > data = mysock.recv(512) > if (len(data)<1): > break > d += data > > usa una lista > > out=[] > while True: > data = mysock.recv(512) > if (len(data)<1): > break > out.append(data.decode('utf-8')) > > a questo punto il loop successivo dovrebbe funzionati.. No, non funziona. Lui vuole l'input per riga. Può usare mysock.makefile. Ciao Manlio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] dati da socket - lettura riga per riga
Il giorno 27 novembre 2015 07:01, Matteo Boscolo < matteo.bosc...@boscolini.eu> ha scritto: > Il 26/11/2015 22:21, Luca Zucchelli ha scritto: > >> for line in stringdata: >> print(line) >> > da quello che capisco io sringdata e una stringozza.. per cui se la usi > nel loop ti da carattere per carattere.. > in realtà stringdata contiene il pacchetto di dati ricevuti dal socket, comunque nel loop mi da carattere per carattere usa una lista > > out=[] > while True: > data = mysock.recv(512) > if (len(data)<1): > break > out.append(data.decode('utf-8')) > > a questo punto il loop successivo dovrebbe funzionati.. > ho provato ma la lista contiene non ogni singola riga ma il blocco dati che arriva al socket (quindi più righe insieme) la riporto: [u'HTTP/1.1 200 OK\r\nDate: Fri, 27 Nov 2015 17:47:58 GMT\r\nServer: Apache\r\nLast-Modified: Mon, 12 Oct 2015 14:55:29 GMT\r\nETag: "20f7401b-1d3-521e9853a392b"\r\nAccept-Ranges: bytes\r\nContent-Length: 467\r\nCache-Control: max-age=604800, public\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Headers: origin, x-requested-with, content-type\r\nAccess-Control-Allow-Methods: GET\r\nConnection: close\r\nContent-Type: text/plain\r\n\r\nWhy should you learn to write programs?\n\nWriting programs (or programming) is a very creative ', u'\nand rewarding activity. You can write programs for \nmany reasons, ranging from making your living to solving\na difficult data analysis problem to having fun to helping\nsomeone else solve a problem. This book assumes that \neveryone needs to know how to program, and that once \nyou know how to program you will figure out what you want \nto do with your newfound skills. \n'] come faccio a fare uno "split" invece che per parola per riga? > ciao > Matteo > > ciao grazie ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] dati da socket - lettura riga per riga
ho provato ma la lista contiene non ogni singola riga ma il blocco dati che arriva al socket (quindi più righe insieme) la riporto: [u'HTTP/1.1 200 OK\r\nDate: Fri, 27 Nov 2015 17:47:58 GMT\r\nServer: Apache\r\nLast-Modified: Mon, 12 Oct 2015 14:55:29 GMT\r\nETag: "20f7401b-1d3-521e9853a392b"\r\nAccept-Ranges: bytes\r\nContent-Length: 467\r\nCache-Control: max-age=604800, public\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Headers: origin, x-requested-with, content-type\r\nAccess-Control-Allow-Methods: GET\r\nConnection: close\r\nContent-Type: text/plain\r\n\r\nWhy should you learn to write programs?\n\nWriting programs (or programming) is a very creative ', u'\nand rewarding activity. You can write programs for \nmany reasons, ranging from making your living to solving\na difficult data analysis problem to having fun to helping\nsomeone else solve a problem. This book assumes that \neveryone needs to know how to program, and that once \nyou know how to program you will figure out what you want \nto do with your newfound skills. \n'] come faccio a fare uno "split" invece che per parola per riga? finalmente ho trovato...ho trovato un tipo built-in per le stringhe str.splitlines() che restituisce una lista di stringhe.proprio quello che cercavo. magari adesso provo anche mysock.makefile. grazie Matteo e Manilio Luca ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] dati da socket - lettura riga per riga
ciao a tutti stavo provando ad estrarre informazioni da dati ottenuti tramite socket. se faccio print dei dati che ottengo tutto è perfetto ma quando tento di estrarre i dati sembra che questi non siano come me li aspetto (cioè in righe di caratteri). Io uso i dati come se aprissi un file e lo leggessi riga per riga (forse è quì che sbaglio), invece mi legge carattere per carattere, ma non saprei come altro fare. Mi date qualche spunto su cosa cercare perchè non riesco a trovare niente di utile, sulla documentazione di python usano repr(data) ma non ho ottenuto i risultati che speravo. Forse dovrei fare un loop fino al carattere di fine riga e salvare in una lista, ma è il modo corretto di farlo? questo è il mio codice: #http://www.pythonlearn.com/code/intro-short.txt import socket import re mysock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) mysock.connect(('www.pythonlearn.com', 80)) mysock.send ('GET http://www.pythonlearn.com/code/intro-short.txt HTTP/1.0\n\n' ) d = '' #Receive data from the socket. The return value is a bytes object representing the data received while True: data = mysock.recv(512) if (len(data)<1): break d += data print(d) stringdata = d.decode('utf-8') print(stringdata) for line in stringdata: print(line) matchLast = re.findall('^Last-Modified: (.+)', line) print(matchLast) # i dati che cerco mysock.close() grazie Luca ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] dati da socket - lettura riga per riga
Il 26/11/2015 22:21, Luca Zucchelli ha scritto: for line in stringdata: print(line) da quello che capisco io sringdata e una stringozza.. per cui se la usi nel loop ti da carattere per carattere.. invece che memorizzare la stringa in questo modo while True: data = mysock.recv(512) if (len(data)<1): break d += data usa una lista out=[] while True: data = mysock.recv(512) if (len(data)<1): break out.append(data.decode('utf-8')) a questo punto il loop successivo dovrebbe funzionati.. ciao Matteo --- Questa e-mail è stata controllata per individuare virus con Avast antivirus. http://www.avast.com ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python