fo.write(" Sunday")返回6

时间:2017-12-30 21:27:45

标签: python-3.x

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

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

但是当我试着写#"星期天"到文件但它返回的字符数为6而不是写#34;星期日"到文件。

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

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

>>> fo = open("days.txt", 'w')
>>> fo.write("Sunday")
6
>>> fo.write("Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday")
62

2 个答案:

答案 0 :(得分:0)

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

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

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

实际写入文件的方法有两种,一种是关闭文件,另一种是.flush()

答案 1 :(得分:0)

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

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

确保文件是"当前"你可以这样做:

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

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