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