簡體   English   中英

如何在文件中插入行

[英]how to insert line in file

我想在文件中插入一行。 如下所示,一旦出現“ AAA”,請插入“ 111”

原始文件

AAA
BBB
CCC
AAA
DDD
AAA

我希望結果是:

AAA
111
BBB
CCC
AAA
111
DDD
AAA
111

這是我的代碼

with open(outfile, 'r+') as outfile:
        for line in outfile:    

            if line.startswith('AAA'):
                outfile.write('111\n')
                outfile.flush() 

但是事實證明,每次我運行python時,都只在文件末尾添加“ 111”,而不是僅在“ AAA”開始的后面添加,如下所示。

AAA
BBB
CCC
AAA
DDD
AAA111

關於此有一些問題,但未正確回答。 我真的很想知道那些下注者,您有什么問題嗎? 還是你聽不懂? 還是僅僅因為一些小錯誤而不會影響問題?

要使用文件fileinput模塊就地更新文件,

import fileinput

for line in fileinput.input(outfile, inplace=True):
    if line.strip() == 'AAA':
        print line,
        print 111
    else:
        print line, 

輸出: -

AAA
111
BBB
CCC
AAA
111
DDD
AAA
111

r+添加到文件末尾。 這不是您想要的。 只需將代碼拆分為讀寫即可:

filepath = "/file.txt"
with open(filepath, 'r') as infile:
    content = infile.readlines()

out = []
with open(filepath 'w') as outfile:
        for line in content:
            out.append(line)
            if line.startswith('A'):
                out.append("111\n")
        outfile.write("".join(out))
with open("in.txt") as f:
    lines = f.readlines()
    for ind, line in enumerate(lines):
        if line.rstrip() == "AAA":
            lines[ind] = line.rstrip() + "\n111\n"
    with open("in.txt","w") as f1:
        f1.writelines(lines)

輸出:

AAA
111
BBB
CCC
AAA
111
DDD
AAA
111

如果要寫入新文件並避免將所有文件讀入內存,請執行以下操作:

with open("in.txt") as f,open("output.txt","w") as f1:
    for  line in f:
        if line.rstrip() == "AAA":
            f1.write(line.rstrip() + "\n111\n")
        else:
            f1.write(line)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM