我想知道如何在python中覆盖文件。当我在open语句中使用“w”时,我的输出文件中只有一行。
article = open("article.txt", "w")
article.write(str(new_line))
article.close()
请告诉我,我该如何解决问题?
答案 0 :(得分:0)
“覆盖”是一个奇怪的术语;特别是因为您希望从上面的代码中看到多行
我猜你的意思是“超越”。这个词就是“附加”,你会想要'a'而不是'w'。
答案 1 :(得分:0)
如果你实际上想要逐行覆盖文件,你将需要做一些额外的工作 - 因为只有r
ead可用的模式,{{1} } rite和w
ppend,它们实际上都没有逐行覆盖。
看看这是否是您正在寻找的:
a
如您所见,您首先需要将文件内容“保存”到缓冲区(# Write some data to the file first.
with open('file.txt', 'w') as f:
for s in ['This\n', `is a\n`, `test\n`]:
f.write(s)
# The file now looks like this:
# file.txt
# >This
# >is a
# >test
# Now overwrite
new_lines = ['Some\n', 'New data\n']
with open('file.txt', 'a') as f:
# Get the previous contents
lines = f.readlines()
# Overwrite
for i in range(len(new_lines)):
f.write(new_lines[i])
if len(lines) > len(new_lines):
for i in range(len(new_lines), len(lines)):
f.write(lines[i])
)中,然后替换它。
答案 2 :(得分:0)
感谢您的快速回复。我想用相同的内容覆盖相同的文件。该文件由12行组成。当我运行程序时,它应该覆盖具有相同内容的内容。现在,当我使用'a'ppend模式时,只能生成12行。这是我的完整源代码:
import re
text = open("abc.txt")
for line in text:
if re.search(r"\|+", line):
new_line = line.replace("|", "\t\t")
article = open("article.txt", "a")
article.write(str(new_line))
article.close()
我怎么能意识到这一点?