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()))
添加回答
舉報