私はGUIのことはしません。あなたはそれを書くことができます、しかしあなたがこれを完全にコマンドラインで行うとしましょう。
物理的な副作用を起こす前に、すべてのユーザー入力を取り込むことをお勧めします。つまり、ユーザーがすべてのオプションを完了するまで、ディレクトリの作成を開始しないでください。PythonドキュメントツールSphinxが良い例です。ユーザーが起動すると、ユーザーに多くの質問をしますquickstart
。Sphinxは、最後まで物理ディレクトリと構成ファイルを生成しません。これにより、疲れていることを「覚えておく」必要がなくなります。ブランチが多すぎます。そうしないでください。最後にセットアップ全体を実行します。
依存します。単純なコマンドラインインターフェイスを作成したい場合、Pythonにはコマンドラインオプションを作成するためのargpaseがあります。上記は、argparseの上に構築されたdocoptライブラリを使用して可能になります。ただし、これはコマンドラインが必要な場合に便利です。スクリプトで「pythonscript.py」を呼び出してからユーザーに質問するだけでよい場合、セットアップを処理する便利なライブラリはわかりません。
実は開発中だったのdcoprompt
ですが、まだ完成していません。https://bitbucket.org/yeukhon/docprompt 基本的には、セットアッププロンプトを書き留めて、覚えておくことができるはずでした。コードベースはひどいもので、あまり効率的ではありません。試すことはできますが、今学期は宿題が多いため、夏まで機能を終了しません。
したがって、答えはノーです。コードは自分で作成する必要があります。たくさんの生の入力とたくさんの変数。
繰り返しますが、副作用が出るまで最後まで待ちます。
繰り返しますが、副作用が出るまで最後まで待ちます。
編集
ディレクトリとシンボリックリンクの作成が終了するまで待ち、IOErrorが発生したステップの1つで、セットアップ全体を元に戻したいとします。作成しているのがディレクトリ、ファイル、シンボリックリンクだけの場合は、それらをリストの辞書に追加します。私の編集を参照してください。
def physical_setup(...):
memory = {
'dirs': [],
'symlinks': [],
'files': []
}
try:
# start doing physical setup
memory['dirs'].append('/tmp/dir1')
os.path.mkdir('/tmp/dir1')
# catching all exceptions is considered a bad practice but sometimes be a little badass
except Exception as e:
for key, valist in memory.iteritems():
if key == 'dirs':
for dir in valist:
shutil.rmtree(dir)
重要:上記のコードには1つの問題があります。フォルダを削除する前に、リンクを解除し、ファイルとdirを削除する必要があります。ファイルがすでに削除されたディレクトリの一部である場合は、例外をサイレントにキャッチする必要があるためです。たくさんのコード。リンクを解除し、ファイルとディレクトリを削除するだけです。