Ошибка при запуске скрипта аргумента из учебника
У меня есть класс кодирования для начинающих для Python. Книга, которую мы используем, - "Кодирование для тестеров на проникновение, создающих лучшие инструменты". Во второй главе мы начали создавать скрипты Python, и я не могу понять, что не так с этим скриптом, который я должен перепечатать из книги. Увидеть ниже.
import httplib, sys
if len(sys.argv) < 3:
sys.exit("Usage " + sys.argv[0] + " <hostname> <port>\n")
host = sys.argv[1]
port = sys.argv[2]
client = httplib.HTTPConnection(host,port)
client.request("GET","/")
resp = client.getresponse()
client.close()
if resp.status == 200:
print host + " : OK"
sys.exit()
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
После запуска кода в строке 20 (последняя строка печати) появляется сообщение об ошибке:
selmer@ubuntu:~$ python /home/selmer/Desktop/scripts/arguments.py google.com 80
Traceback (most recent call last):
File "/home/selmer/Desktop/scripts/arguments.py", line 20, in <module>
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
TypeError: cannot concatenate 'str' and 'int' objects
Весь код запускается в Ubuntu 14.04 на виртуальной машине с Konsole и создается в Gedit. Любая помощь будет оценена!
1 ответ
Решение
Замените строку печати из:
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
с:
print '%s DOWN! (%d, %s)' % (host, resp.status, resp.reason)
Исходная строка пытается добавить int (resp.status
) к строкам, как говорится в сообщении об ошибке.