Python 2.7 python 2.7 IOError:[Errno 24]打开的文件太多:
在工作中,我运气不好,因为我用python修复了别人编写的一个糟糕的url验证程序脚本。这是一个非常混乱的代码,在试图修复其中一个bug时,我发现了一些我不理解的行为 脚本必须处理一个包含大约10000个url的文件,它必须检查每个url是否有效,不仅要检查其结构,还要检查它是否存在(使用pycurl)。在代码的一部分中,这样做是:Python 2.7 python 2.7 IOError:[Errno 24]打开的文件太多:,python-2.7,Python 2.7,在工作中,我运气不好,因为我用python修复了别人编写的一个糟糕的url验证程序脚本。这是一个非常混乱的代码,在试图修复其中一个bug时,我发现了一些我不理解的行为 脚本必须处理一个包含大约10000个url的文件,它必须检查每个url是否有效,不仅要检查其结构,还要检查它是否存在(使用pycurl)。在代码的一部分中,这样做是: for li in lineas: liNew = "http://" + li parsedUrl = urlparse.urlparse(liN
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,为什么
对于liNew=“http://”+li,文件描述符不会超过默认限制1024,但是将该行更改为liNew=li将使其超过8000,为什么
- 之前:断开的url-未下载任何内容(未打开任何文件)
- 之后:正确的url-url保存到文件(有10K个url)
close()
方法被及时调用)
默认限制(1024)很低,但除非您了解代码的功能,否则不要增加它。是的,这是有道理的。我正在重写整件事,它是如此的混乱,我更容易从零开始。