2016-12-04 7 views
0

ファイルのダウンロードを待っている間にPythonスクリプトを一時停止します。 私は明示的な待機を使用したくありません。 私はこれを速く実行し、明示的な待機に頼らないことを望みます。 私はちょっとノービッシュですが、ここで私が試したことがあります。whileループのglobモジュールを使用してダウンロードを待ちます

file_check = glob.glob1('downloads', '*.pdf') 
     while not os.path.isfile(str(file_check)): 
      time.sleep(1) 

私はstr()を使用しました。これは、パスの文字列が必要であると不平を言いました。 これは適切にこれを行う方法ではないと感じています。どのように動的にファイルのダウンロードを待つべきですか?

P.S 私の.pdfファイルは「/ downloads」にダウンロードされ、私のpdfはダウンロード前に動的に名前が付けられているので、globsワイルドカードが必要です。

答えて

0

file_check = glob.glob1('downloads', '*.pdf')を実行すると、glob.glob1(...)の結果はfile_checkに1回だけ保存されます。それだけです。この場合、whileループ内に入力すると、file_checkは変更されないため、そこから抜け出すことはありません(外部に値を変更できるスレッドやものがある場合を除いて)。

glob.globとglob.glob1(これは公開されていないので、ドキュメントを見ることができます)はリストを返します。 'ダウンロード'フォルダが空の場合、空のリスト[]が表示されます。 Pythonではリストにはimplicit booleannessが含まれているので、リストが空の場合は条件文でFalseと解釈され、空でない場合は 'True'と解釈されます。

while not glob.glob1('downloads', '*.pdf'): 
    time.sleep(1) 

結果はこのようになりますあなたのコードを書き換え

関連する問題