覆盖文件中的行而不创建“^M”字符

Overwrite line in a file without creating the "^M" character

假设我有 python 代码:

print("1")
print("2")
print("3")
print("go")

这将产生结果:

1
2
3
go

如果我想覆盖打印的最后一行,我会这样做:

print("\rJohn Cena")

这将打印到控制台,

1
2
3
John Cena

但是,如果我使用 > 将该输出通过管道传输到文本文件,该文本文件将显示为

1
2
3
go^MJohn Cena

我将如何用 print 语句覆盖前一行文本,以便文本文件中的输出与控制台的输出相匹配?

您将不得不重写文件(即读入、替换行,然后写回)。或者,您可以只将要写入的内容存储到文件中(例如作为列表),根据需要进行修改,然后在完成后写入。

您也可以考虑分块编写:在部分还在变化的时候一次存储它们,然后一次写出它们(例如 10 或 100 行的块)。