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

标签 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 会生成一个损坏的文件 - 似乎是因为我刚刚编写的文件还没有“准备好”(如果我错了,请告诉我真正的原因是什么) )。

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

最佳答案

试试这个:

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 .

关于python - 验证文件是否已准备好在 py3k 中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254057/

相关文章:

python - 如何降级numpy?

c# - 读写二进制文件的最快方法

bash - 检查文件是否存在

c++ - 程序输出预期输出后的百分比

C++ 有效地跳过多行

python - Flask/Heroku/Redis/RQ 内部服务器错误

python - Kivy:为什么 BoxLayout 将我的按钮推到底部?

python - 如何在顶级窗口python上创建垂直和水平滚动条

python - 如何在 ppt 中嵌入 python 图表(或图像)并刷新它

java - 如何删除文件中的重复行