Python脚本在一些迭代后关闭

时间:2016-01-05 20:23:10

标签: python

我写了一段代码,当我运行它时,它会顺利进行 “czz”,我是初学者,我不知道是什么问题。如果有人能告诉我我做错了什么。基本上,此代码背后的想法是尝试使用“.ro”

查找所有可用的3个字母的域
import urllib2
import urllib
import string

from urllib2 import Request, urlopen, URLError, HTTPError
from string import ascii_lowercase

f = open('3-letters.txt', 'w')

for x in ascii_lowercase:
    for y in ascii_lowercase:
        for z in ascii_lowercase:
            req = Request("http://"+x+y+z+".ro")

            try:
                response = urlopen(req)
            except HTTPError as e:
                f.write("http://"+x+y+z+".ro\n")
            except URLError as e:
                f.write("http://"+x+y+z+".ro\n")
            else:
                print "bad "+x+y+z


f.close();

3 个答案:

答案 0 :(得分:4)

一个问题是,在您不再需要它们之后,您不会关闭它们,您可以使用response.close()执行此操作。在finally块中执行此操作以确保始终执行。

try:
    # do stuff
except:
    # do stuff
finally:
    response.close()

此外,这是生成所有三个字母字符串比嵌套for循环更好的方法:

>>> from string import ascii_lowercase
>>> from itertools import product
>>> three_letters = (''.join(x) for x in product(ascii_lowercase, repeat=3))
>>> for x in three_letters:
...     print(x)

'aaa'
'aab'
'aac'
'aad'
'aae'
...

答案 1 :(得分:2)

你必须关闭连接。

void cameraCaptureTask_Completed(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {
        MessageBox.Show(e.ChosenPhoto.Length.ToString());

        //Code to display the photo on the page in an image control named myImage.        
        System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
        bmp.SetSource(e.ChosenPhoto);
        myImage.Source = bmp;
    }
}

我希望你不要尝试垃圾邮件或其他东西。

答案 2 :(得分:2)

您可以尝试向timeout添加urlopen参数:

response = urlopen(req, timeout=2)

例如,cze.ro似乎需要永远。