2017-07-11 18 views
0

私の関数はURLcrazyを実行し、出力を任意の変数に格納していないことがわかりました。示されたtmp変数は、そのリストに出力を格納していません。私はこれを修正して、実行されたデータを保存することができます。私はURLcrazyの出力を取得しようとしていますデータを保存するために関数を修正するにはどうすればよいですか?

def run_urlcrazy(): 
    tmp = [] 
    for domain in grab_domains(): 
     np = os.system("urlcrazy " + domain) 
     tmp.append(np) 
    return tmp 

は、ループ内のすべてのドメインに対して実行し、ouptutをスライスすることができます。私はURLcrazyがデータを出力していると思います。別の関数でデータをフォーマットできません。私はデータベースに情報を保存するためにできる必要があります。

+0

あなたは必ず 'grab_domainsことです:

私はあなたがsubprocess.Popenをしたいと考えている:あなただけの出力をしたいし、エラーのチェックに興味を持っていない場合は代わり

import subprocess def run_urlcrazy(): tmp = [] for domain in grab_domains(): proc = subprocess.Popen(["urlcrazy", domain], stdout=subprocess.PIPE) (out, err) = proc.communicate() tmp.append(out) return tmp 

、あなたはsubprocess.check_outputを使用することができます() 'には何らかの要素がありますか? –

+0

['os.system'](https://docs.python.org/2/library/os.html#os.system)の戻り値は、プロセス*の出力コードではなく、プロセス*の戻りコード*です。出力をキャプチャするには(この質問を参照)(https://stackoverflow.com/questions/923079/how-can-i-capture-the-stdout-output-of-a-child-process)。 – tadman

答えて

1

os.systemではありません。は、実行されたコマンドの出力を返します。終了コード(シグナル成功またはエラー)のみを返します。

out = subprocess.check_output(['urlcrazy', domain]) 
+0

これは正しいルートと思われますが、ドメインとurlcrazyをもう引数として実行していません。何が問題になると思いますか? – jakethesnake

+0

@ jakethesnakeシェルがTrueに設定されている場合、最初の引数はリストであってはならないという問題があったと思います。私は自分の答えを編集しました。今はうまくいくはずです。 –

+0

@COLDSPEED Hmmmmはエラーをクリアしましたが、それでもargをdomainとしてurlcrazyを実行していません。 – jakethesnake

関連する問題