2013-12-14 43 views
0

現在我一直在研究一個小工具箱,作爲學習基本python的一種方法。這個工具包的一部分是遵循這個解釋的代碼。這是一個基本的網絡枚舉腳本,簡單地ping本地子網中的所有IP地址。不過,我正在執行一些問題。 第一代碼如何結合Python字符串和整數?

ip1=raw_input() 

if ip1 == None: 
    ip="192.168.0.x" 
else: 
    ip=ip1 

ipend="1" 

while ipend != 255: 
    ip.replace("x", ipend) 

    attempt=subprocess.Popen(["ping.exe", ip], stdout=subprocess.PIPE).communicate()[0] 

    if ("unreachable" in attempt): 
     pass 
    else: 
     print "The host at ", ip, "is UP!" 

    ipend += 1 

if ipend == "255": 
    subprocess.stop 
     raw_input("Thank you for using PTK. Please press enter to exit.") 

enum() 

所以我的第一個問題,我相信在我str.replace功能,我試圖和一個int到STR,並且由於這一點,似乎是無法創建,平,並打印正確的IP。我不確定將整個字符串轉換爲浮點數是否可行,但是這是我的一個想法。如前所述,我是非常基本的Python和我正在學習,所以請原諒我,如果這是一個愚蠢的問題與簡單的修復。

回答

2

這條線實際上沒有做任何事情。您需要將結果分配給某些內容。

ip.replace("x", ipend) 

ipend是一個字符串,增加一個字符串將不起作用。將其設置爲int並將其轉換爲替換函數中的str。

ipend += 1 

,它通常最好使用一個for循環,如果你能,所以你從搞亂,創造一個無限循環的安全。

for ipend in range(1,256): #Range won't actually give you the last number here. 
    #Do stuff 
+0

以便將第一部分的一個例子,我應該添加類似IP2 = ip.replace – L8NIT3TR0UBL3

+0

燁,應該工作。然後使用ip2 ping – M4rtini

+0

真棒感謝您的乾淨清晰的答案!這正是我喜歡這個網站的原因! – L8NIT3TR0UBL3