2012-02-13 3 views
1

入力として使用する別のプログラム(gnuplot)用のファイルに書き込みます。ファイルがpy3kで読み込み可能であることを確認します

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")を奪う:

+1

ウイルス対策ソフトウェアをオフにして、スリープを解除できるかどうかを確認してください。 –

+1

実際の書き込みを待っていると思われます。g.close()の前に 'g.flush() '?あなたはそれから '睡眠 'を取ることができますか?そして、あなたは「輸入時間」と言うことができます。 Pythonのtime.sleep( ')' – snim2

+1

これを試してください: 'g.write(" [snip] "); g.flush(); os.fsync(g.fileno()) 'そして、' os.system( "sleep 1") 'を取り除きます。私は間違っているかもしれないが、私はバッファがまだファイルに書き込まれていないと思う。参照:http://docs.python.org/library/os.html#os.fsync –

答えて

1

これを試してみてください。私はバッファがまだファイルに書き込まれていないと思う。 Python fsync docsを参照してください。

関連する問題