Python 3.x 为什么赢了';是否将我的for循环写入所有创建的文件?
我认为我的for循环或openwith语句有问题,但我不确定它是什么 我试图将每个项目与文本文件的每一行进行比较,如果该行包含该项目,则该行将打印到.bed文件中,其名称取自登录号(acc) 我希望创建每个文件(文件名取自acc),但只创建并写入第一个文件。所有其他文件都已创建但未写入 控制台输出为:Python 3.x 为什么赢了';是否将我的for循环写入所有创建的文件?,python-3.x,Python 3.x,我认为我的for循环或openwith语句有问题,但我不确定它是什么 我试图将每个项目与文本文件的每一行进行比较,如果该行包含该项目,则该行将打印到.bed文件中,其名称取自登录号(acc) 我希望创建每个文件(文件名取自acc),但只创建并写入第一个文件。所有其他文件都已创建但未写入 控制台输出为: ____________________ chr10 75911036 75911101 NM_006721.3_cds_0_0_chr10_75911037_f 0 +
____________________
chr10 75911036 75911101 NM_006721.3_cds_0_0_chr10_75911037_f 0 +
chr10 75960521 75960596 NM_006721.3_cds_1_0_chr10_75960522_f 0 +
chr10 75984295 75984349 NM_006721.3_cds_2_0_chr10_75984296_f 0 +
chr10 76074424 76074503 NM_006721.3_cds_3_0_chr10_76074425_f 0 +
chr10 76153898 76154071 NM_006721.3_cds_4_0_chr10_76153899_f 0 +
chr10 76158228 76158337 NM_006721.3_cds_5_0_chr10_76158229_f 0 +
chr10 76285013 76285184 NM_006721.3_cds_6_0_chr10_76285014_f 0 +
chr10 76349039 76349075 NM_006721.3_cds_7_0_chr10_76349040_f 0 +
chr10 76360136 76360251 NM_006721.3_cds_8_0_chr10_76360137_f 0 +
chr10 76429940 76430027 NM_006721.3_cds_9_0_chr10_76429941_f 0 +
chr10 76468078 76468203 NM_006721.3_cds_10_0_chr10_76468079_f 0 +
_____________________
_____________________
_____________________
_____________________
_____________________
我不确定发生这种情况的具体原因。但是,我建议对文件IO使用
with
关键字:
for acc in acc_trimmed:
with open((acc.rsplit(".", 1)[0]) + ".bed", "w") as output_file:
print("_____________________")
for line in f:
if acc in line:
print(line)
output_file.write(line)
它将处理文件的打开/关闭,以防出现问题谢谢您的回答!它仍然提出了同样的问题,但这似乎解决了它:
for acc in acc_trimmed:
with open("RefSeq_CDS") as f:
with open((acc.rsplit(".", 1)[0]) + ".bed", "w") as output_file:
print("_____________________")
for line in f:
if acc in line:
print(line)
output_file.write(line)
for acc in acc_trimmed:
with open("RefSeq_CDS") as f:
with open((acc.rsplit(".", 1)[0]) + ".bed", "w") as output_file:
print("_____________________")
for line in f:
if acc in line:
print(line)
output_file.write(line)