У меня есть класс кодирования начинающих для 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 (последняя печать линии) с указанием:
[email protected]:~$ 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 , Любая помощь будет оценена!
Это редактирование работает отлично! Большое вам спасибо, кажется странным, это второй раздел кода, с которым я столкнулся, который, кажется, написан неправильно. Последний был, если заявления были написаны неправильно, и мне потребовалось некоторое время, чтобы решить проблему. Несмотря на. Как вы думаете, вы могли бы объяснить, почему это сработало? Мне нравится учиться на ошибках, где я могу :) –
Если вы создаете строку с помощью '+', вы должны убедиться, что каждый элемент является 'str'. Например, 'foo =" a "+" b "+" c "' в порядке, но 'bar =" a "+ 1" - нет. Вы можете исправить вторую, сказав «bar =» «+ str (1)» (или в вашем случае 'str (resp.status)'. Но мой предпочтительный вариант - вместо этого использовать форматирование строк - с помощью '%' markers to создайте строку, например, '% s' для str и'% d' для int. Там есть много страниц о том, как использовать форматирование строк в Python, поэтому стоит прочитать несколько примеров. – jlb83