Python 3.x OSError:[Errno 24]打开的文件太多

Python 3.x OSError:[Errno 24]打开的文件太多,python-3.x,Python 3.x,我有一个csv文件,我在每个脚本结束后读取它的值。 大约20分钟后,我收到一个错误OSError:{Errno 24]打开的文件太多:“指向csv文件的文件路径” 尝试将ulimit-Sn设置为20000 with open(path) as id_list: csv_reader = csv.DictReader(id_list, delimiter=',') for i in csv_reader: if i['TestScript'] == filename

我有一个csv文件,我在每个脚本结束后读取它的值。 大约20分钟后,我收到一个错误OSError:{Errno 24]打开的文件太多:“指向csv文件的文件路径”

尝试将ulimit-Sn设置为20000

with open(path) as id_list:
    csv_reader = csv.DictReader(id_list, delimiter=',')
    for i in csv_reader:
        if i['TestScript'] == filename:
            return (i['TestID'])
    return ("Assign ID For " + filename)
(编辑:)您的代码实际上应该运行良好;但是您必须在函数中调用它,例如

def检查(路径、文件名):
打开(路径)作为id_列表:
csv_reader=csv.DictReader(id_列表,分隔符=',')
对于csv_阅读器中的i:
如果i['TestScript']==文件名:
返回i['TestID']
返回f“为{filename}分配ID”

您现在可以调用check函数,例如为路径列表中的每个路径调用check函数。

“如果您在with语句中返回,它将不会像您预期的那样关闭文件句柄。”我不认为这是真的;请看@kaya3,谢谢你的澄清!我怀疑你在这个问题下的评论是正确的,指出了一些与
无关的问题,
没有正确关闭…这段代码只打开一个文件;如果它是你问题的根源,那么它一定是在一个循环或一个调用了多个o的函数/方法中nce。请向我们展示足够的代码来演示/再现问题。