我有一个包含以下代码的 python 函数:
with open(modelfilepath, "rb") as modelfile, open(vcffilepath, "rb") as vcffile:
for row in gtf_getrow(modelfile):
print row
#add features as appropriate
if row["feature"] == "transcript":
addfeature(some args...)
if row["feature"] == "exon":
addfeature(some other args..., vcffile=vcffile)
for
addfeature() 函数的执行在返回循环之前会经过几个函数。在“外显子”的情况下,vcffile
对象作为参数传递给最终写入vcffile
.
问题是经过几次迭代后,vcffile
对象似乎会自发关闭,从而导致程序崩溃。如果我对用于直接访问文件名的函数进行硬编码vcffile
,则不会出现问题,但这似乎是一个不受欢迎的解决方案,因为它从 with 块中删除了对文件的控制。我也不希望每次访问文件时都必须打开和关闭文件,因为该程序正在解析数百兆字节的表格数据。提前感谢您的建议。