在工作中,我運氣不好,已經修復了由別人完成的python中寫得不好的url驗證器腳本。這是一個非常混亂的代碼,並試圖修復其中一個錯誤,我發現了一些我不明白的行爲。python 2.7 IOError:[Errno 24]太多打開的文件:
腳本必須處理一個文件,其中包含大約10萬個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://」 +李,文件描述符不超過1024的默認限制,但將該行更改爲liNew = li將使它們超過8000,爲什麼?
是的,這是有道理的。我正在重寫整個事情,這是一個混亂,我更容易從頭開始。 – Juancho 2014-09-27 23:55:54