Re: [Python] dati da socket - lettura riga per riga

2015-11-27 Per discussione Manlio Perillo
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

2015-11-27 Per discussione Luca Zucchelli
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

2015-11-27 Per discussione Luca Zucchelli
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

2015-11-26 Per discussione Luca Zucchelli
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

2015-11-26 Per discussione 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..

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