验证文件是否已准备好在py3k中读取

时间:2012-02-13 00:16:27

标签: python file-io

我正在写另一个程序(gnuplot)的文件作为输入。

g = open('test.gnuplot', 'w')
g.write("[snip]")
g.close()

os.system("sleep 1")
os.system("gnuplot test.gnuplot")

如果我省略sleep 1 gnuplot生成一个受损的文件 - 看似因为我刚写的文件尚未“准备好”(如果我错了请告诉我真正的原因是什么)。

我猜有一种更优雅的方式等待文件准备好阅读,它是什么?

1 个答案:

答案 0 :(得分:1)

试试这个:

g = open('test.gnuplot', 'w')
g.write("[snip]")
g.flush()
os.fsync(g.fileno()) 
os.system("gnuplot test.gnuplot")

带走os.system("sleep 1")。我认为缓冲区尚未写入文件。请参阅python fsync docs