2 回答
TA贡献1834条经验 获得超8个赞
要向文件中写入一行,您需要执行以下操作:
with open("file.txt", "a") as f: print("new line", file=f)
如果你想用制表符分隔你也可以添加sep="\t"
,这就是为什么 python 3 做了print
一个函数所以你可以使用sep
, end
, file
, 和flush
关键字参数。:)
打开文件进行附加意味着文件指针从文件末尾开始,这意味着写入它不会覆盖任何数据(附加到文件末尾)并迭代它(或以其他方式读取它)给出没有什么比你已经到达文件末尾更重要的了。
因此,您无需遍历文件的行,而只需向其中写入一行:
with open("Mimp_hits.bed", "a") as file_object: print(sequence.description, h.start(), h_rc.end(), file=file_object)
您还可以考虑只在循环开始附近打开文件,因为打开它一次并写入多次比多次打开它更有效,而且 with 块会自动关闭文件,因此无需显式执行此操作。
TA贡献1860条经验 获得超8个赞
您正在尝试以“a+”模式打开文件,并从中循环遍历行(这将找不到任何内容,因为当您这样做时文件位于末尾)。在任何情况下,如果这只是一个输出文件,那么您将以“a”模式打开它以附加到它。
可能您只想打开文件一次以进行追加,并在with语句内部执行主循环,file_object.write(...)在您真正想将字符串追加到文件时使用。file_object.close()请注意,使用此构造时不需要 for with。
with open("Mimp_hits.bed", "a") as file_object:
for sequence in SeqIO.parse(infile, "fasta"):
# ... etc per original code ...
if length < mimp_length:
file_object.write("{}\t{}\t{}\n".format(
sequence.description, h.start(), h_rc.end()))
添加回答
举报