OSError : [Errno 24] 打开的文件太多
Posted
技术标签:
【中文标题】OSError : [Errno 24] 打开的文件太多【英文标题】:OSError : [Errno 24] Too many open files 【发布时间】:2020-03-07 02:08:42 【问题描述】:我有一个 csv 文件,我在每个脚本结束后读取它的值。 大约 20 分钟后,我收到错误 OSError: Errno 24] Too many open files: "file path pointing to csv file"
尝试将 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)
【问题讨论】:
这段代码只打开一个文件;如果它是您的问题的根源,那么它必须在一个循环或一个多次调用的函数/方法中。请向我们展示足够的代码来演示/重现问题。 ***.com/help/minimal-reproducible-example 【参考方案1】:(编辑:)您的代码实际上应该可以正常运行;但是你将不得不例如在类似的函数中调用它
def check(path, filename):
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 f"Assign ID For filename"
您现在可以调用检查功能,例如对于路径列表中的每个路径等。
【讨论】:
“如果你在 with 语句中返回,它不会像你期望的那样关闭文件句柄。” 我不认为这是真的;见***.com/questions/9885217/… @kaya3,感谢您的澄清!我怀疑您在问题下的评论是正确的,指出与with
未正确关闭无关的其他问题...以上是关于OSError : [Errno 24] 打开的文件太多的主要内容,如果未能解决你的问题,请参考以下文章
OSError: [Errno 19] 无法打开 uinput 设备:没有这样的设备
socketserver OSError:[Errno 98] Address already in use
python-serial OSError: [Errno 11] 资源暂时不可用
Python创建文件报错OSError:[Errno 22] Invalid argument处理