2016-06-17 14 views
-4

スクリプト全体を再実行せずにmainを再度実行させるにはどうすればよいですか?Python 3.5でスクリプトを再実行

import sys #importing module that is used to exit the script 

def main(): 

#doing stuff 

main() 

#Re-run the script - looking for a cleaner way to do this! 

def restart(): 

    restart = input("Press any key + Enter to start again, or x + Enter to exit.") 
    if(restart != "x"): 
      exec(open("./calc.py").read()) 
      # not sure how to run main() again without calling out the script name again? 
    else: 
      print ("Exiting!") 
    sys.exit ((main)) 

restart() 

#End of Program 
+4

ちょっと... 'main()'をもう一度呼びますか?しかし、なぜあなたは何を 'exec'しているのですか? – jonrsharpe

+2

OPの元の投稿は、プログラミング/ Pythonを始めたばかりであり、学習していると述べているため) – davedwards

答えて

0
あなたは直接 main()順を呼び出すことにより、何度でもあなたが望むよう mainモジュール方式を再実行することができ

:あなたは、再起動の方法などのユーザーインタラクションが持っているしたい場合は、

def main(): 
    # Code goes here... 
    return; 

main(); 
main(); 
main(); 

しかし、 mainを定義して、メソッドを再実行するかどうかを制御するオプションのパラメーター(デフォルト値を持つパラメーター)を使用することを検討してください。あなたができるようになる https://docs.python.org/3.5/library/atexit.html

def main(argv, AskRestart= True): 

    # Main code goes here.... 

    if (AskRestart): 
     # User interaction code goes here ... 

    return; 

また、あなたが通訳を終了するときにのみ実行されるメソッドを割り当てることができますどのように確認するためにはPython 3.5.1にatexitパッケージの中に見ることができますあなたが何を望んでいても、すべてが完了したら誰かにモジュール全体を再起動するオプションを与えます。これにより、execコールの依存がなくなり、同じ機能を期待するためのより一貫した簡単なアプローチになります。

+0

助けてくれてありがとう - 非常に感謝しています。しかし、exec(...をmain()と置き換えるだけで、2回実行して終了するのですか?これまでのところargvを利用しようとしましたが、引き続き試しています/ –

+0

上記のように、 mainメソッドをオプションの引数で指定し、execの代わりに再起動メソッドを更新して、 'AskRestart'パラメータの値が' True'または 'False'でmainを呼び出すようにします。上記のリンク先のドキュメントを参照してください)を実行するatexitメソッドに 'restart'を指定すると、' restart'を再起動して 'main'を得ることができます。 'AskRestart'が正しく設定された状態でmainを再起動し、' if(AskRestart) 'の中で再び'再起動 'を呼びます。 –

+0

ああ、ありがとう。 –

0

main()をmainとして継続的に再起動することについてのあなたのゴールはまだ分かりませんが、まだ何もしていない空の関数ですが...)mainを継続的に使用する方法ユーザーはxwhile Trueループを使用することであってもよい入るまで繰り返します。

import sys #importing module that is used to exit the script           

def main(): 

#doing stuff                       

    restart() # <-- use main to restart() 

#Re-run the script - looking for a cleaner way to do this!           

def restart(): 

    restart = raw_input("Press any key + Enter to start again, or x + Enter to exit.") 
    while True:  # <-- key to continually restart main() function 
     if(restart != "x"): 
      exec(open("./calc.py").read()) 
     # not sure how to run main() again without calling out the script name again?    
      main() # <-- restart main 
     else: 
      print ("Exiting!") 
     sys.exit ((main)) 

restart() 

#End of Program 

・ホープこれも役立ちます!

+0

Worked Great!もう一度ありがとう! –

関連する問題