【问题标题】:Text File doesn't append ("a") after opened in write mode ("w") in Python在 Python 中以写入模式(“w”)打开后,文本文件不附加(“a”)
【发布时间】:2021-12-31 05:18:14
【问题描述】:

以“w”模式打开文本文件并在其中写入内容后;当我想在附加模式下打开同一个文件时(因为我想保持第一行的内容相同)它会覆盖内容而不是在它下面添加。

以下是示例:

代码:

hand1 = open("test.txt", "w")
hand1.write("Good Morning")
hand1.close()

hand2 = open("test.txt", "a")
hand2.write("\n" + "Hello")
hand2.close()

文本文件:

Good Morning

Hello

无论我运行这个 python 文件多少次,它仍然给我相同的输出:

文本文件:

Good Morning

Hello

我期望输出的位置(如果我多次运行 python 文件):

文本文件:

Good Morning
Hello
Hello
Hello

有人知道如何解决这个问题吗?如果没有打开“w”模式,“Hello”可能会出现多行。

【问题讨论】:

  • 当你再次运行它时,你正在重新运行整个事情,而不仅仅是“附加”部分。
  • 从代码看来,您首先以w 模式打开文件,然后再以a 模式打开文件。因此,每次运行此文件时,它都会首先以写入模式打开它,从而覆盖之前的内容。

标签: python python-3.x file append text-files


【解决方案1】:

从代码看来,您首先以w 模式打开文件,然后再以a 模式打开文件。因此,每次运行此文件时,它都会首先以写入模式打开它,从而覆盖之前的内容。此外,当您再次运行脚本时,它不仅会执行附加部分,还会运行整个脚本。如果你想要这种行为,你可以这样做。

  1. 将参数作为-wwrite-aappend 传递到文件或-wa 以执行writeappend 到文件。
  2. 根据参数决定执行代码的哪一部分。

所以执行脚本的可能方式可以是python test.py -wpython test.py -apython test.py -wa

【讨论】:

  • 哦,我明白了.....嗯,确实学到了新东西?,谢谢
【解决方案2】:

每次运行脚本时,都会创建一个覆盖旧文件的新文件。您可以添加 if 语句来检查您的文件是否已经存在,如果不存在,则创建一个。

import os

if not os.path.isfile("test.txt"): 

    hand1 = open("test.txt", "w")
    hand1.write("Good Morning")
    hand1.close()

hand2 = open("test.txt", "a")
hand2.write("\n" + "Hello")
hand2.close()

【讨论】:

  • 非常感谢您的宝贵时间,它对我有用。
猜你喜欢
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 2020-06-23
相关资源
最近更新 更多