2013-02-27 18 views
5

Piszę prostego klienta i serwer Pythona, który działa dobrze przekazując adres serwera w moim kodzie, jednak chcę, aby użytkownik mógł wprowadzić adres serwera i rzut i błąd, jeśli jest niepoprawny. Kiedy mam poniższy kod, otrzymuję komunikat o błędzie z terminalu "index index out of range"."Indeks listy poza zakresem" podczas korzystania z sys.argv [1]

server = (sys.argv[1]) 
serverAdd = (server, '65652') # server address and port number 

Czy ktoś może mi w tym pomóc?

Po uruchomieniu programu klienta w Pythonie, chcę mieć możliwość wprowadzenia adresu, aby połączyć się z nim i zapisać go na serwerze. Uruchomę program bezpośrednio z wiersza poleceń, wpisując program nazwa_programu.py. Serwer już nasłuchuje połączeń przychodzących.

+2

A ty to nazywasz? – kindall

+0

czy powyższe polecenie nie jest wywołaniem linii poleceń? – user1978826

+0

Możesz spróbować wydrukować listę, aby się upewnić, że coś tam jest. 'print (sys.argv)' –

Odpowiedz

12

Z tego Python:

import sys 

print(sys.argv) 

I wywołany z tym poleceniem:

>python q15121717.py 127.0.0.1 

uzyskać ten wynik:

['q15121717.py', '127.0.0.1'] 

myślę, że nie są przechodzącą argument do listy Skrypt w języku Python:

Teraz możesz nieznacznie zmienić swój kod, aby pobrać serwer z wiersza poleceń lub monit o serwer, gdy żaden nie zostanie przekazany. W takim przypadku możesz zobaczyć coś takiego:

if len(sys.argv) > 1: 
    print(sys.argv[1]) 
else: 
    print(input("Enter address:")) 
+0

Myślę, że masz rację. Piszę myśląc, że sys.argv [1] będzie drugim elementem itp. ...... więc w przypadku powyżej sys.argv ['127.0.0.1'] – user1978826

+0

Dzięki za pomoc :) –

Powiązane problemy