【发布时间】:2021-10-02 15:18:01
【问题描述】:
这里可能是一个愚蠢的问题,但这是我的好奇心。
我首先认为当使用“a”时,方法 .append() 会自动合并到其中,这是有道理的,因为添加“a”应该已经向程序表明我们的最终目标,但我真的不明白为什么使用“r”时情况并非如此,相反,我们还必须在行尾添加 .read()。
这是一个例子:
file1 = open("test.txt", "a") #no .append() or something needed here
file1.write("Hello")
file1.close()
var_lecture = open("test.txt", "r").read() #.read() necessary
print(var_lecture)
谁能让我更好地理解这一点?
【问题讨论】:
-
你正在使用
.write -
为什么您希望或需要
write()在打开追加时使用不同的名称?O_APPEND的方式记录在底层 UNIX 文件系统 API 中,它使所有 写入 自动结束。这些操作仍称为写入;O_APPEND只是为它们的行为提供了额外的保证,因此您可以让多个程序写入同一个日志文件而不会覆盖彼此的内容(因为,使用该标志,它们不再各自在文件中拥有自己的独立位置他们正在写信给)。 -
请参阅
man 2 open以了解 Python 将前端置于其之上的 API。 -
顺便说一句,您可能会看到 Are language specs and their developments on-topic? 了解为什么关于语言设计的“为什么”问题在这里通常不受欢迎。 Stack Overflow 最适合用于解决问题的狭窄、实用答案的问题。争论应该如何设计很快就会演变成对立的意见,我们不允许基于意见的问题。
-
无论您使用哪种模式,文件API都是相同的。问题是,如果模式不正确,某些 API 将无法工作。以“r”模式打开,
.write在那里......但如果你使用它会引发错误。这是从 C 中基于函数的 API 建模的,其中使用了“读取”和“写入”等函数。这些函数在 C 库中可用,但您只能在正确的时间使用它们。
标签: python python-3.x file