«индекс списка вне диапазона» при использовании sys.argv[1]

#python #opencv

Вопрос:

Я пишу простой клиент и сервер Python, который отлично работает, передавая адрес сервера в моем коде, однако я хочу, чтобы пользователь мог ввести адрес сервера и выдать ошибку, если она неверна. Когда у меня есть приведенный ниже код, я получаю сообщение об ошибке от терминала «индекс списка вне диапазона».

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

Кто-нибудь может мне помочь с этим, пожалуйста.

Когда я запускаю свою клиентскую программу на python, я хочу иметь возможность вводить адрес для подключения и хранить его на сервере. Я запускаю программу непосредственно из командной строки, набрав programname.py. Сервер уже работает, прослушивая входящие соединения.

Комментарии:

1. И как ты это называешь?

2. разве вышесказанное не является вызовом командной строки?

3. Возможно, вы захотите попробовать распечатать список, чтобы убедиться, что там что-то есть. print(sys.argv)

4. «введите адрес сервера»: В качестве параметра в командной строке или в stdin?

5. «это не вызов командной строки»: я не вижу здесь вызова командной строки. Пожалуйста, покажите, как вы назвали серверную программу.

Ответ №1:

С помощью этого Python:

 import sys

print(sys.argv)
 

И вызывается с помощью этой команды:

 >python q15121717.py 127.0.0.1
 

Я получаю этот вывод:

 ['q15121717.py', '127.0.0.1']
 

Я думаю, что вы не передаете аргумент в свой скрипт Python

Теперь вы можете слегка изменить свой код, чтобы сервер формировал командную строку или запрос для сервера, если ни один из них не передан. В этом случае вы бы посмотрели на что-то вроде этого:

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

Комментарии:

1. Я думаю, ты прав. Я пишу, думая, что sys.argv[1] будет вторым элементом и т. Д……. так что в случае выше sys.argv[‘127.0.0.1’]