[英]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.