2 回答

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
要向文件中寫(xiě)入一行,您需要執(zhí)行以下操作:
with?open("file.txt",?"a")?as?f:? ???print("new?line",?file=f)
如果你想用制表符分隔你也可以添加sep="\t"
,這就是為什么 python 3 做了print
一個(gè)函數(shù)所以你可以使用sep
,?end
,?file
, 和flush
關(guān)鍵字參數(shù)。:)
打開(kāi)文件進(jìn)行附加意味著文件指針從文件末尾開(kāi)始,這意味著寫(xiě)入它不會(huì)覆蓋任何數(shù)據(jù)(附加到文件末尾)并迭代它(或以其他方式讀取它)給出沒(méi)有什么比你已經(jīng)到達(dá)文件末尾更重要的了。
因此,您無(wú)需遍歷文件的行,而只需向其中寫(xiě)入一行:
????????????????with?open("Mimp_hits.bed",?"a")?as?file_object:? ???????????????????????????????????print(sequence.description,?h.start(),?h_rc.end(),?file=file_object)
您還可以考慮只在循環(huán)開(kāi)始附近打開(kāi)文件,因?yàn)榇蜷_(kāi)它一次并寫(xiě)入多次比多次打開(kāi)它更有效,而且 with 塊會(huì)自動(dòng)關(guān)閉文件,因此無(wú)需顯式執(zhí)行此操作。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
您正在嘗試以“a+”模式打開(kāi)文件,并從中循環(huán)遍歷行(這將找不到任何內(nèi)容,因?yàn)楫?dāng)您這樣做時(shí)文件位于末尾)。在任何情況下,如果這只是一個(gè)輸出文件,那么您將以“a”模式打開(kāi)它以附加到它。
可能您只想打開(kāi)文件一次以進(jìn)行追加,并在with語(yǔ)句內(nèi)部執(zhí)行主循環(huán),file_object.write(...)在您真正想將字符串追加到文件時(shí)使用。file_object.close()請(qǐng)注意,使用此構(gòu)造時(shí)不需要 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()))
添加回答
舉報(bào)