subprocessモジュール:一時ファイルのオブジェクトとcallメソッドを使用して
-
20-08-2019 - |
質問
私は、一時ファイルライブラリNamedTemporaryFile方法で、一時的な名前のファイルを作成しました。 私は彼らにバッファをフラッシュ書かれている、と私はそれらを閉じていない(または他の彼らは離れて行くかもしれない)。
私はこれらの生成されたファイルを使用して、いくつかのシェルコマンドを呼び出すためにsubprocess
モジュールを使用しようとしています。
subprocess.call('cat %s' % f.name)
は常に名前の一時ファイルが存在しないことを言って失敗します。
os.path.exists(f.name)
は常にtrueを返します。
私はシェルから直接ファイルにcatコマンドを実行することができます。
<=>モジュールは、一時ファイルでは動作しませんいくつかの理由がありますか?
それを動作させる方法はありますか?
事前に感謝します。
解決
あなたがサブプロセスのシェル= trueオプションを使用していますか?
他のヒント
なぜあなたはあなたのNamedTemporaryFile
のオプションのパラメータとをしないdelete=False
?そうすれば、あなたは安全に、彼らが消えることはありません知っているそれらを閉じ、通常はその後、それらを使用し、明示的に設定が完了したら、それらのリンクを解除することができます。この方法ですべてがあまりにも、クロスプラットフォームに動作します。
所属していません StackOverflow