Python / Sockets - AttributeError: 'str' object has no attribute 'append' [RESOLVIDO]

1. Python / Sockets - AttributeError: 'str' object has no attribute 'append' [RESOLVIDO]

Wygor Felipe Souza
wfs1995

(usa Red Hat)

Enviado em 29/11/2015 - 15:55h

galera to estudando um poco python com sockets, encontrei em uma pesquisa pela internet um tutorial interessante mas logo no primeiro exercício fazendo um tcp client simples me deparei com esse erro.

segue o código que eu escrevi:


from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.connect(("www.google.com",80))
s.send("GET /index.html HTTP/1.0\r\n\r\n")
pedacos = []
while True:
pedacos = s.recv(10000)
if not pedacos:
break
pedacos.append(pedacos)
s.close
resposta = "".join(pedacos)
print (resposta)


na hora de executar eu recebo esse erro no terminal

Traceback (most recent call last):
File "tcp_client.py", line 10, in <module>
pedacos.append(pedacos)
AttributeError: 'str' object has no attribute 'append'

eu já ganhei que o erro está nessa lista que junta os dados fragmentados no retorno da comunicação porque se eu modifico o código da seguinte forma:


from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.connect(("www.google.com",80))
s.send("GET /index.html HTTP/1.0\r\n\r\n")
resposta = s.recv(10000)
s.close
print (resposta)


o script funciona corretamente.

O que eu devo fazer para que o primeiro script funcione corretamente?



  


2. MELHOR RESPOSTA

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 30/11/2015 - 04:03h

Já percebeu que está atribuindo a variável pedacos como uma lista e logo após esta sobreescrevendo ela com o resultado do socket?
O correto seria como abaixo:
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.connect(("www.google.com",80))
s.send("GET /index.html HTTP/1.0\r\n\r\n")
pedacos = []
while True:
resultado = s.recv(10000)
if not resultado:
break
pedacos.append(resultado)
s.close
resposta = "".join(pedacos)
print (resposta)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts