Python 文件上的第二个文件处理程序的行为异常
我有一个测试设置方法,在其中创建tempfile.NamedTemporaryFile。然后我要测试的代码需要读取该文件的内容。当它这样做时,看起来文件是空的Python 文件上的第二个文件处理程序的行为异常,python,file,testing,io,Python,File,Testing,Io,我有一个测试设置方法,在其中创建tempfile.NamedTemporaryFile。然后我要测试的代码需要读取该文件的内容。当它这样做时,看起来文件是空的 import tempfile fp1 = tempfile.NamedTemporaryFile() fp1.write('foo') fp2 = open(fp1.name) print fp2.read() # I expect "foo" here 发生这种情况的原因是写入方法在 换句话说,并非所有对文件系统的write()
import tempfile
fp1 = tempfile.NamedTemporaryFile()
fp1.write('foo')
fp2 = open(fp1.name)
print fp2.read() # I expect "foo" here
发生这种情况的原因是写入方法在 换句话说,并非所有对文件系统的write()调用都会立即产生结果 在磁盘上进行更改。有多种方法可以解决此问题: 写入()后刷新() 或者您可以将缓冲设置为0,这是一种表示“不要”的丑陋方式 缓冲区,但立即写入磁盘”
发生这种情况的原因是写入方法在 换句话说,并非所有对文件系统的write()调用都会立即产生结果 在磁盘上进行更改。有多种方法可以解决此问题: 写入()后刷新() 或者您可以将缓冲设置为0,这是一种表示“不要”的丑陋方式 缓冲区,但立即写入磁盘”
import tempfile
fp1 = tempfile.NamedTemporaryFile()
fp1.write('foo')
fp2 = open(fp1.name)
# Because of buffering we've not yet written to the file.
assert fp2.read() == ''
fp1.flush()
# We've now explicitly written to the file.
assert fp2.read() == 'foo'
fp1.close()
fp2.close()
# Let's do it again, but now use buffering.
fp1 = tempfile.NamedTemporaryFile(bufsize=0)
fp1.write('foo')
fp2 = open(fp1.name)
# Because we've set buffering to 0 (so no buffering) we've written to the
# file.
assert fp2.read() == 'foo'
fp1.close()
fp2.close()