简单的python文件写作问题

时间:2011-01-01 23:41:52

标签: python file

我正在学习Python,并遇到了一些问题。在我的OSX OSX安装上,这发生在控制台中:

>>> filename = "test"
>>> reader = open(filename, 'r')
>>> writer = open(filename, 'w')
>>> reader.read()
''
>>> writer.write("hello world\n")
12
>>> reader.read()
''

在BASH中调用more test确认测试中没有任何内容。发生了什么事?

感谢。

4 个答案:

答案 0 :(得分:3)

您看到此行为有两个可能的原因。

当您打开文件进行编写(在Python中使用"w"开放模式)时,操作系统将删除原始文件并创建一个全新的文件。因此,通过先打开文件进行读取,然后然后写入,原始读取句柄指的是一个不再具有名称的文件(该文件在关闭之前仍然存在)。那时你正在阅读一个不同于你写的文件。

在你打开打开的顺序以便打开写入和然后读取之后,在刷新之前,你不一定能够从文件中读取数据:

>>> writer.flush()
>>> reader.read()
'hello world\n'

刷新文件会将可能位于Python文件缓冲区中的任何数据写入操作系统,这样当您从其他句柄读取文件时,操作系统将返回数据。请注意,Python本身并不知道这两个句柄引用相同的文件,但操作系统会这样做。

答案 1 :(得分:2)

你可能正在诋毁你的档案。通常在同一时间打开文件进行阅读和写作通常不是一个好主意。

答案 2 :(得分:0)

缓冲。如果您真的想要读取和写入同一个文件,请使用"w+"打开一个句柄。

答案 3 :(得分:0)

通过涂抹,你需要在阅读之前强制清空缓冲区。关闭文件是一种很好的方法。