Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在写入后、关闭前从文件中读取_Python_File - Fatal编程技术网

Python 在写入后、关闭前从文件中读取

Python 在写入后、关闭前从文件中读取,python,file,Python,File,我正在尝试从一个原本是空的文件中读取,在写入之后,在关闭它之前。这在Python中可能吗 with open("outfile1.txt", 'r+') as f: f.write("foobar") f.flush() print("File contents:", f.read()) 用f.flush刷新似乎不起作用,因为最终的f.read仍然没有返回任何内容 除了重新打开文件外,还有什么方法可以从文件中读取foobar吗?文件对象跟踪文件中的当前位置。您可以使用f

我正在尝试从一个原本是空的文件中读取,在写入之后,在关闭它之前。这在Python中可能吗

with open("outfile1.txt", 'r+') as f:
    f.write("foobar")
    f.flush()
    print("File contents:", f.read())
用f.flush刷新似乎不起作用,因为最终的f.read仍然没有返回任何内容


除了重新打开文件外,还有什么方法可以从文件中读取foobar吗?

文件对象跟踪文件中的当前位置。您可以使用f.tell获取它,并使用f.seekposition设置它

要重新从头开始读取,必须使用f.seek0将位置设置为开头


您需要使用以下命令将文件对象的索引重置到第一个位置:


这将使文件可从中读取。

在读取之前,请返回到文件的开头:

f.seek(0)
print f.read()

为什么read不会自动显示为0?或者至少应该有一种神奇的方法来对付粗心的阅读。我们可以找到多种原因来解释原因。在目前的情况下,python只遵循系统的规范,在其他语言(如C)中也会发现这种行为。我认为原始规范基于POSIX,它遵循KISS原则,即只读从文件描述符读取字节,SEEK移动当前位置,FLUSH会同步驱动器上的更改…我相信这些操作非常接近系统级的实际实现方式。感谢您提供的资源。但在Python标准中实现超高级方法的概念是错误的吗?我认为,例如Python套接字可以发挥一些开箱即用的魔力,但事实并非如此,因为它遵循的是最不出人意料的原则。当大多数语言遵循该协议时,.read在指定位置读取字节,.read2将在指定位置读取两个字节,让python以不同的方式进行操作将比另一种方式产生更多的混乱。
f.seek(0)
print f.read()