0
我有一個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的。任何幫助,將不勝感激!
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
與:
該編輯工作完美!非常感謝你,這似乎很奇怪,這是我所遇到的第二部分代碼,似乎寫錯了。最後一個有if語句寫錯了,花了我很長時間纔得到解決。而不管。你認爲你可以解釋爲什麼這有效嗎?我喜歡從錯誤中學習,我可以:) – 2015-02-07 22:38:36
如果你使用'+'來構建一個字符串,你必須確保每個項目都是'str'。例如,'foo =「a」+「b」+「c」'可以,但是'bar =「a」+ 1「不是。你可以通過說'bar =「一個」+ str(1)'(或者在你的情況下用'str(resp.status)'來糾正第二種情況。但是我的首選選擇是使用字符串格式 - 使用'%'標記來建立一個字符串,比如用'%s'表示str,用'int d'表示int。關於如何在Python中使用字符串格式 - 有很多頁面 - 所以值得通讀幾個例子。 – jlb83 2015-02-09 09:06:28