我读过很多类似的问题,但其中大多数都是通过修复缩进来解决的,所以要么我不知道,要么有一些简单的修复方法我的问题,但我不认为这是关于身份。 所以我有这个功能,基本上使用两个* .txt文件执行一些操作,并返回一个生成器对象namedtuples
与我需要稍后查找的一些信息。ValueError:上下文管理器范围内的关闭文件上的I/O操作
def master_reader(file1, file2):
with open(file1, "r", encoding="utf-8") as genomas:
with open(file2, "r", encoding="utf-8") as listas:
l = parser_listas(listas)
f = parser_genomas(genomas)
f = map(intifier, f)
f = (people_maker(linea, l) for linea in f)
f = map(genotipo_getter, f)
f = map(fen_getter, f)
return f
的事情是一切正常,当我把它并将其分配给一个variable.But我需要使用它作为一个参数,这样我就可以把它每次我需要它的一些疑问,我需要而进行过它:
print(valor_caracteristica("TCT", "Luna Lovegood", master_reader("genomas.txt", "listas.txt")))
但我得到这个异常:
Original exception was:
Traceback (most recent call last):
File "lib.py", line 204, in <module>
print(valor_caracteristica("TCT", "Luna Lovegood", master_reader("genomas.txt", "listas.txt")))
File "lib.py", line 194, in valor_caracteristica
a = next(filter(lambda x: x.nombre == nombre, file))
File "lib.py", line 185, in <genexpr>
f = (people_maker(linea, l) for linea in f)
ValueError: I/O operation on closed file.
感谢您的彻底解释Martijn!直到现在,我还没有意识到在上下文管理器中使用惰性对象的含义。 – Fgbruna