2016-04-18 9 views
0

への書き込みされていません。OSのコマンドは、私は、コードの下に持っているファイル

import os, subprocess 
def cfile(): 
     p = r'/mypath/abc' 
     cmd = ["who am i | awk '{print $1}'"] 
     if not os.path.exists(p): 
       fh = open(p, 'a') 
       try: 
        subprocess.Popen(cmd, stdout=fh) 
       finally: 
        fh.close() 
cfile() 

コードの上に「フォルダ」という名前のファイルを作成しますが、何も書いていません。ここで間違っていることを知るために私を助けてください。私はPythonを使用しています。

+1

_inside_ '/ mypath/folder'ファイルに出力しようとしてはいけませんか? – Chris

+0

私のために働きます: 'folder'という名前の普通のファイル(ディレクトリではありません)を作成します。 – Malvolio

+0

@Chris mypathディレクトリの下に "folder"というファイルを作成していて、そのファイルに "date"出力を追加したいのですが、 –

答えて

0

各Popenオブジェクトで.wait()を呼び出して、完了したことを確認してからflush()を呼び出すことができます。おそらく次のようなものでしょう:

import os 
import subprocess 


def cfile(): 
    p = r'/mypath/abc' 
    cmd = ["who am i | awk '{print $1}'"] 
    fh = open(p, 'a+') 
    try: 
     sb = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=fh) 
     sb.wait() 
     fh.flush() 
    finally: 
     fh.close() 

cfile() 
+0

ありがとうございました。同じことを付け加えることを教えてください。次の行以降同じファイルを追加する必要がある場合は、同じコードを再度実行します。私は 'fh = open(p、 'a')'を試みたが働いていなかった。 –

+0

ファイルが存在しない場合は、ファイルを作成して追加するようにソリューションを修正しました。それがあなたのために働く場合、答えを受け入れてください。 –

+0

ありがとう。今働いている。 –

関連する問題