【发布时间】:2014-09-26 04:20:15
【问题描述】:
在工作中,我很不幸地修复了由其他人在 python 中编写的糟糕的 url 验证器脚本。这是一个非常混乱的代码,在尝试修复其中一个错误时,我发现了一些我不理解的行为。
脚本必须处理一个包含大约 10,000 个 url 的文件,它必须检查每个 url 以查看它是否有效,不仅在它的结构中,而且还检查它是否存在(为此使用 pycurl)。在代码的一部分中,这是完成的:
for li in lineas:
liNew = "http://" + li
parsedUrl = urlparse.urlparse(liNew)
在这种情况下,错误是在行首添加了“http://”,就像之前在脚本中所做的那样。所以我把代码改成这样:
for li in lineas:
liNew = li
parsedUrl = urlparse.urlparse(liNew)
现在,使用相同的输入文件,脚本失败并出现错误:
IOError: [Errno 24] Too many open files:/path/to/file/being/written/to.txt
使用 liNew = "http://" + li,文件描述符不会超过默认限制 1024,而是将该行更改为 liNew = li会让他们超过8000,为什么??
【问题讨论】:
标签: python-2.7