2016-01-08 38 views
1

我寫了一個簡單的腳本來檢查一些域的可用性,但我不明白爲什麼它以abns而不是aaaa開頭。ascii的Python產品,錯誤的開始

下面是代碼:

import whois 
import eventlet 

from itertools import product 
from string import ascii_lowercase 

f = open('4-letter.txt', 'w') 

k = (''.join(x) for x in product(ascii_lowercase, repeat=4)) 


def fetch(url): 
    for x in k: 
     if whois.whois(x+".ro").status == "OK": 
      print(x+" bad") 
     else: 
      f.write(x+".ro\n") 


pool = eventlet.GreenPool() 

for status in pool.imap(fetch, k): 
    print(status) 

f.close() 
+0

無法重現;你是否檢查過'aaaa'的'4-letter.txt'和stdout(控制檯窗口)? – Artyer

+1

我可以看到* abns.ro *被佔用。它可以是* aaaa,aaab ... abnr *都可用,這是第一個被佔領的? –

+0

'fetch'中的'url'在哪裏被使用? –

回答

2

您訪問全球發生器k在這個函數:

def fetch(url): 
    for x in k: 
     if whois.whois(x+".ro").status == "OK": 
      print(x+" bad") 
     else: 
      f.write(x+".ro\n") 

但是你也用手kpool.imap(fetch, k)。因此k已經在調用fetch()之前的幾個步驟中迭代。