擅长:python、mysql、java
<p>不,第一种方法不能保证数据被写出,因为一旦句柄不再被其<code>write</code>成员引用,就不能保证文件将被刷新和关闭。CPython可能就是这样,但不一定是其他Python解释器;它是Python垃圾收集器的实现细节。</p>
<p>您应该真正使用第二种方法,除了不需要<code>os.fsync</code>;只需关闭文件,数据就应该可用于其他进程。</p>
<p>或者,更好(<a href="http://docs.python.org/reference/compound_stmts.html#with" rel="noreferrer">Python >=2.5</a>):</p>
<pre><code>with open(self.statusfile, 'w') as f:
f.write(status)
</code></pre>
<p><code>with</code>版本是异常安全的:即使<code>write</code>失败,也会关闭文件。</p>