私は、Python の "with" ステートメントを頻繁に使用する傾向があります。Pythonスクリプトがクラッシュしてもタスクは実行されるため、いくつかのファイルをディレクトリにシンボリックリンクまたはコピーした後、ディレクトリをクリーンアップすることがほとんどです。「with」ステートメントで使用できる on of my 関数の例を次に示します。
@contextmanager
def use_symlink(orig, dest):
os.symlink(orig, dest)
try:
yield
finally:
os.unlink(link)
これらをステートメントで使用する方法は、非常に急速に積み重なる傾向があります。
#Off to an adventure
with use_symlink(a, b):
with use_symlink(c, b):
with use_symlink(d, b):
with working_dir(dir1):
#do something
with working_dir(dir2):
#do something that creates file dir2_file1, dir2_file2
with use_symlink(dir2_file1, b):
with use_symlink(dir2_file2, b):
with working_dir(b):
#Do the last thing
#Home safely
強力な "with" ステートメントと同じように簡単かつ安全に上記を行うためのより良い方法はありますか?