0

私がやりたいことは、ファイルが存在するかどうかを確認し、存在しない場合はアクションを実行し、ファイルが存在するまでもう一度確認してから、コードが他の操作を続行することです。

4

2 に答える 2

4

簡単にするために、安全のためにタイムアウトを使用して、小さなポーリング関数を実装します。

def open_file(path_to_file, attempts=0, timeout=5, sleep_int=5):
    if attempts < timeout and os.path.exists(path_to_file) and os.path.isfile(path_to_file): 
        try:
            file = open(path_to_file)
            return file
        except:
            # perform an action
            sleep(sleep_int)
            open_file(path_to_file, attempts + 1)

Python 組み込みのpollingの使用も検討します。これは、ファイル記述子の I/O イベントを追跡/報告するためです。

于 2013-01-18T18:00:34.193 に答える
1

Linux を使用していると仮定すると、次のようになります。

ファイルが存在するかどうかを確認するために何らかの種類のループを本当に回避したい場合、およびファイルがある時点で作成されることが確実であり、ファイルが作成されるディレクトリを知っている場合は、pynotifyを使用して親ディレクトリへの変更を追跡できます。 . 何かが変更されたときに通知され、作成する必要があるファイルであるかどうかを検出できます。

ただし、ニーズによっては、価値があるよりも面倒な場合があります。その場合、カイルのソリューションのような小さなポーリング機能をお勧めします。

于 2013-01-18T17:54:16.770 に答える