一連のタスクを順番に実行するプログラムを書いています。各タスクは新しいファイルを出力する関数ですが、ファイル名が既に存在する場合、特定のタスクは実行されません。この種のコードを何度も書いていることに気づきました。
task1_fname = task1()
# come up with filename for next task
task2_fname = "task2.txt"
if not os.path.isfile(task2_fname):
# task2 might depend on task1's output, so it gets task1's filename
task2(task1_fname)
task3_fname = "task3.txt"
if not os.path.isfile(task3_fname):
task3(...)
基本的な考え方は、ファイルが存在する (理想的には空でない) 場合、このファイルを生成するタスクを実行すべきではないということです。
os.path.isfile
毎回呼び出しを書かずにこれを表現するための最良の Pythonic の方法は何ですか? デコレータはこれをもっと簡潔に表現できますか? または、次のようなもの:
with task2(task1_fname):
# continue to next task
何か案は?