2017-08-17 14 views
-2

時には私のPythonスクリプトで関数を実行し、その関数が私に望ましくない出力を与えると、このステップを元に戻してから別のパラメータで関数を再度実行する必要があります。私の関数が私に間違った出力を与えるならば、スクリプトが元に戻ってしまうようなやり方をすることができるのですか?パラメータのセットが1つだけの場合、望ましい出力が得られます。Python - スクリプトが失敗した場合にスクリプトを元に戻す

PS:この機能を実行すると、永続的な変更が行われます。

例:

def function(): 
    for i in range(parameters): 
     value = perform_operation(parameters[i]) #makes permanent changes 
     if value != some_value: 
      undo(perform_operation()) 
+0

このような関数の例を挙げることはできますか?あなたが一貫して(またはしばしば十分な)間違った出力を得ているなら、関数は間違っているかもしれません。そうでない場合は、 'if not correct_output:your_function(new_input)'のように出力の正確性を単に 'if'でチェックしてください。あなたの出力が元に戻すようなものに応じて、出力の例もあげてください。 – Lomtrur

+1

「やったことを元に戻す」とはどういう意味ですか?おそらく 'try' - ' except'節でそれを行うことができます。 'try'の中で例外を発生させ、' except'の変更を元に戻す –

+0

条件文を使うだけですか? '何か:値= perform_operation()elif something_else:value = whatevs ...' –

答えて

1

あなたは(...など、インストールしたパッケージを削除し、新しく作成されたファイルを削除します)例えば、メイン機能で行われたものをきれいに比べて別の関数を作成する必要があり、それを使用しています。

def main_func(): 
    proc = subprocess.Popen('touch test test2') 
    return proc.returncode 

def clean_main_func(): 
    subprocess.Popen('rm test test2') 


def __name__ == '__main__': 
    result = main_func() 
    if main_func() != 0 : 
     clean_main_func() 

またはあなたがそれをキャッチし、エラーを上げることができます。

def main_func(): 
    proc = subprocess.Popen('touch test test2') 
    if proc.returncode !=0 : 
     raise Error 

def clean_main_func(): 
    subprocess.Popen('rm test test2') 


def __name__ == '__main__': 
    try: 
     result = main_func() 
    except Error: 
     clean_main_func() 

それはジュスト例だし、それはあなたの質問に答える願っています。

関連する問題