2012-03-29 13 views
0

私はsubprocess.Popen経由でwgetを呼び出す関数を持っています。この関数の目的は、wgetとspiderにリンクリストのWebサイトを生成させることです。Python - プロセスが完了したときにwgetを確認します。

wgetプロセスが完了したことを知り、Python関数の残りの部分を実行し続けることは可能ですか?

def get_urls(url, uname, pword, output): 
    subprocess.Popen (['wget', '-nd', '-r', '--user=', uname, '--password=', pword, 
    '--no-parent','--spider',url, '--output-file= ',output], stdout=subprocess.PIPE) 

    #some method telling wget has finished writing to the output file, so continue 

    foo = bar() #rest of function etc. 

またサイトをスパイダリング(およびログイン資格情報を渡し)のpython経由ではなく、システムコールを作るのより良い方法はありますか?

おかげ

答えて

0

あなたがサブプロセスを使用する理由は、応答のための

import urllib 

url = 'http:......' 
filename = 'your_filename' 
urllib.urlretrieve(url, filename) 
+0

おかげurllibはより有効に活用することがあります。私はurlib2を使ってスパイダーを書くことになった – ctdeveloper

1

はおそらく、あなたの代わりにsubprocess.callまたはsubprocess.check_callを使用することができますか?彼らはコマンドが完了するのを待ってから、あなたに戻りコードを与えます。

参照ドキュメントhere

関連する問題