我目前正在撰寫一個腳本來解決 root-me.org 編程類別的第一個挑戰。由于無法自己找到解決方案,我在互聯網上從 YouTube 教程中找到了一個解決方案
為了仍然從這個練習中學到一些東西,我決定完全分析用 Python 撰寫的腳本(假設為 2.xi,因為列印陳述句的寫法類似于“print x”而不是“print(x)”),對每一行進行注釋,這樣我就不會錯過我可能不知道的單個元素。不幸的是,我被困在 .find() 函式上。這是代碼的一個片段:
text = irc.recv(2048)
if len(text) > 0:
print(text)
else:
continue
if text.find("PING") != -1:
“irc”物件是使用同名模塊創建的套接字型別物件。當腳本被執行時,最后一行會引發一個錯誤,指出
“型別錯誤:引數應該是整數或類似位元組的物件,而不是‘str’”
我確切地說,當我在 pycharm 上復制/粘貼完整腳本并運行它時,它運行良好(代碼可在此處訪問)
哪里出錯了?感謝您的幫助,如果我不夠準確,我很抱歉,我不經常尋求幫助
uj5u.com熱心網友回復:
socket.recv() 的輸出是位元組,您無法先從中找到子字串,請使用 encoding="utf_8" 解碼為字串
if text.decode(encoding="utf_8").find("PING") != -1:
uj5u.com熱心網友回復:
正如 amir Reza Seddighin 所寫,socket.recv()回傳一個位元組物件(現在),并且它的.find()方法不接受字串引數。或者,通過 將位元組轉換為字串.decode(),您可以通過簡單的前置將字串文字引數更改為位元組b,即text.find(b"PING")。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362106.html
