Ошибка при запуске скрипта аргумента из учебника

У меня есть класс кодирования для начинающих для 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) к строкам, как говорится в сообщении об ошибке.

Другие вопросы по тегам