我正在练习直接在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
.write()
返回写入文件的字节数,如果返回的数字与给定的字节数不同,该数字可用于检查错误,这种情况很可能发生在远程/在线操作中。
您在文件中看不到任何内容的原因是因为文件操作很昂贵,因此操作系统将延迟它们直到文件关闭或将一定量的字节写入文件。
这就是为什么当你执行它编写的脚本时(因为文件在退出脚本时关闭),而在控制台上看起来它不是(因为操作被延迟)。
有两种方法可以实际写入文件,一种是关闭它,另一种是执行.flush()
。
当你执行fo.write("Sunday")
然后你告诉操作系你想要写'星期日'到文件。但操作系统可以延迟写入,直到稍后。
因此,如果您同时打开文件,它将被截断。
要确保文件是“当前”,您可以执行以下操作:
fo.flush()
有关何时将写入保存到磁盘的详细信息,请参阅this question。