将结果保存到txt文件python

时间:2015-09-21 03:04:10

标签: python

我想将这些电子邮件结果保存到目录中的results.txt文件中。

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)

3 个答案:

答案 0 :(得分:0)

你错误地将“with”语句缩进了一个空格。这使得它对于早期的块是主观的。我认为任何自尊的Python解释器都会将其标记为不匹配任何早期的缩进,但它似乎会污染您的输出。

另外,请考虑添加一些跟踪打印语句,以查看代码执行的位置。仅此输出通常可以向您显示问题,或引导我们。您应始终为我们提供实际输出,而不仅仅是一般性描述。

答案 1 :(得分:0)

在功能结束时使用sscanf( str, "%d %lf %lf %lf, &id, &z, &r, &d); for(int i = 0; i < 12; i++) // easy to control skip how many number sscanf( str, "%lf, &tmp); sscanf( str, "%lf %lf", &sfr, &xid); return addys只会输出到您的屏幕。

要检索print,您需要在addys语句中调用该函数,或创建包含with结果的变量。

您可以通过简单地调用函数来保存变量将使用的内存,如下所示:

parseAddress()

答案 2 :(得分: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)