IndexError: índice de lista fora do intervalo

0
#!/usr/bin/env python

import httplib
import sys

#get http server ip
http_server = sys.argv[0]
#create a connection
conn = httplib.HTTPConnection(http_server)

while 1:
    cmd = raw_input('input command (ex. GET index.html): ')
    cmd = cmd.split()

    if cmd[0] == 'exit': #type exit to end it
        break

    #request command to server
    conn.request(cmd[0],cmd[1])

    #get response from server
    rsp = conn.getresponse()

    #print server response and data
    print(rsp.status, rsp.reason)
    data_received = rsp.read()
    print(data_received)

conn.close()

Erro

Traceback (most recent call last):
  File "./client1.py", line 19, in <module>
    conn.request(cmd[0],cmd[1])
IndexError: list index out of range

alguém pode me dizer por que esse erro está chegando e alguém pode modificar o código. é um código do lado do cliente para se conectar com o servidor

minha entrada é: GET index.html

Mas agora meu erro é

File "./client1.py", line 19, in <module>
    conn.request(cmd[0],cmd[1])
  File "/usr/lib/python2.6/httplib.py", line 910, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.6/httplib.py", line 947, in _send_request
    self.endheaders()
  File "/usr/lib/python2.6/httplib.py", line 904, in endheaders
    self._send_output()
  File "/usr/lib/python2.6/httplib.py", line 776, in _send_output
    self.send(msg)
  File "/usr/lib/python2.6/httplib.py", line 735, in send
    self.connect()
  File "/usr/lib/python2.6/httplib.py", line 716, in connect
    self.timeout)
  File "/usr/lib/python2.6/socket.py", line 500, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno -2] Name or service not known
    
por Naive 19.09.2013 / 15:44

1 resposta

0

O que você está fornecendo como entrada para a pergunta?

'input command (ex. GET index.html): '

O código espera que você insira um comando como GET index.html e então divide em um array chamado cmd, depois ele tenta acessar o índice 0 e 1 do array cmd e descobre que não há cmd [1] ou não cmd [0] e cmd [1] provavelmente por causa da entrada que recebeu.

EDITAR

Em resposta à sua segunda pergunta, você precisa alterar sua linha

http_server = sys.argv[0]

para

http_server = sys.argv[1]

Você então executa seu script como ./scriptname www.google.co.uk

    
por stedotmartin 19.09.2013 / 16:14