fo.write(“Sunday”)返回6

问题描述 投票:0回答:2

我正在练习直接在python3.6中打开,阅读和写入文件。

我创建了一个名为days.txt的文件,并在其中列出了一周中的日期。然后我以写入模式打开文件并从Atom确认它被截断了。

但是当我尝试将“Sunday”写入文件但它返回的字符数为6而不是将“Sunday”写入文件。

然后,我在脚本中编写了相同的代码行,保存并运行它并且工作正常。它将信息写入文件。

为什么它在作为脚本运行时有效,但在直接在python中运行时却无效?

>>> fo = open("days.txt", 'w')
>>> fo.write("Sunday")
6
>>> fo.write("Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday")
62
python-3.x
2个回答
0
投票

.write()返回写入文件的字节数,如果返回的数字与给定的字节数不同,该数字可用于检查错误,这种情况很可能发生在远程/在线操作中。

您在文件中看不到任何内容的原因是因为文件操作很昂贵,因此操作系统将延迟它们直到文件关闭或将一定量的字节写入文件。

这就是为什么当你执行它编写的脚本时(因为文件在退出脚本时关闭),而在控制台上看起来它不是(因为操作被延迟)。

有两种方法可以实际写入文件,一种是关闭它,另一种是执行.flush()


0
投票

当你执行fo.write("Sunday")然后你告诉操作系你想要写'星期日'到文件。但操作系统可以延迟写入,直到稍后。

因此,如果您同时打开文件,它将被截断。

要确保文件是“当前”,您可以执行以下操作:

  • fo.flush()
  • 停止脚本(你做了)或退出python解释器(你没有)。然后文件自动关闭,所有挂起的数据都写入磁盘。

有关何时将写入保存到磁盘的详细信息,请参阅this question

© www.soinside.com 2019 - 2024. All rights reserved.