Python スクリプト内で Linux のファイルに書き込むには、2 つの方法があることに気付きました。Popen オブジェクトを作成し、シェル リダイレクション (例: ">" または ">>") を使用してファイルに書き込むか、ファイル オブジェクト (例: open()、write()、close()) を使用できます。
私はしばらく両方を試してみましたが、他のシェル ツールを使用する必要がある場合、Popen を使用するとコードが少なくて済むことに気付きました。たとえば、次の例では、ファイルのチェックサムを取得し、PID を一意の識別子として名前を付けた一時ファイルに書き込もうとしています。(Popen を再度呼び出すと $$ が変更されることはわかっていますが、その必要がないふりをします):
Popen("md5sum " + filename + " >> /dir/test/$$.tempfile", shell=True, stdout=PIPE).communicate()[0]
以下は、ファイルオブジェクトを使用した(急いで書いた)大まかな等価物です。$$ の代わりに os.getpid を使用していますが、まだ md5sum を使用しており、Popen を呼び出す必要があります。
PID = str(os.getpid())
manifest = open('/dir/test/' + PID + '.tempfile','w')
hash = Popen("md5sum " + filename, shell=True, stdout=PIPE).communicate()[0]
manifest.write(hash)
manifest.close()
どちらのアプローチにも長所/短所はありますか? 私は実際に bash コードを Python に移植しようとしており、さらに Python を使用したいと考えていますが、ここでどの方法を使用すればよいかわかりません。