2015-09-21 66 views
-1

我想將這些電子郵件結果保存到我目錄中的results.txt文件中。將結果保存爲一個txt文件python

def parseAddress(): 
    try: 
     website = urllib2.urlopen(getAddress()) 
     html = website.read() 

     addys = re.findall('''[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?''', html, flags=re.IGNORECASE) 

     print addys 

    except urllib2.HTTPError, err: 
     print "Cannot retrieve URL: HTTP Error Code: ", err.code 
    except urllib2.URLError, err: 
     print "Cannot retrive URL: " + err.reason[1] 

    # need to write the addys data to results.txt 
    with open('results.txt', 'w') as f: 
     result_line = f.writelines(addys) 
+0

那麼,有什麼問題呢? –

+0

它不工作...從addys數據結果不被保存到results.txt – curphey

+0

你嘗試過'f.write(addys)'? –

回答

0

使用return addysprint只會輸出到你的屏幕。

爲了檢索addys,您需要調用with語句中的函數或創建一個包含parseAddress()的結果的變量。

您可以保存一個變量將通過簡單地調用該函數,像這樣使用內存:

with open('results.txt', 'w') as f: 
    f.write (parseAddress()) 
0

您錯誤地將「with」語句縮進了一個空格。這使得它對較早的塊有主觀性。我認爲任何自尊的Python解釋器都會將它標記爲不匹配任何較早的縮進,但它似乎會污染您的輸出。

此外,請考慮添加一些跟蹤打印語句,看看您的代碼確實執行了。單靠這種產出往往可以讓你知道問題,或者讓我們知道問題。您應該始終爲我們提供實際的產出,而不僅僅是一般的描述。在你的函數結束

0

你需要修復您的縮進,這是在Python重要,因爲它是定義的唯一途徑一塊代碼。

你也有你的try塊太多的語句。

def parseAddress(): 
    website = None 
    try: 
     website = urllib2.urlopen(getAddress()) 
    except urllib2.HTTPError, err: 
     print "Cannot retrieve URL: HTTP Error Code: ", err.code 
    except urllib2.URLError, err: 
     print "Cannot retrive URL: " + err.reason[1] 

    if website is not None: 
     html = website.read() 
     addys = re.findall('''[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?''', html, flags=re.IGNORECASE) 
     print addys 

     # need to write the addys data to results.txt 
     with open('results.txt', 'w') as f: 
      result_line = f.writelines(addys) 
相關問題