2016-06-17 3 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()'을 다시 호출 하시겠습니까? 근데 왜 너 한테'간부 '하는거야? – jonrsharpe

+2

OP의 원래 게시물은 프로그래밍/파이썬을 시작하고 있으며 = 그들이 배우고 있다고 말했기 때문에) – davedwards

답변

0
직접 main() 순차적으로 호출하여 여러 번 당신이 원하는대로 main 모듈 방법을 다시 실행할 수 있습니다

: 당신이 다시 시작 방법과 같은 사용자 상호 작용이 원하는 경우,

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

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

그러나 메소드를 다시 실행할지 여부를 제어하는 ​​선택적 매개 변수 (기본값이있는 매개 변수)로 main을 정의하는 것이 좋습니다.

def main(argv, AskRestart= True): 

    # Main code goes here.... 

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

    return; 

또한, 인터프리터를 종료 할 경우에만 실행되도록 당신이 방법을 할당하는 방법을 볼 수 파이썬 3.5.1에서 atexit 패키지로 볼 수 있습니다 : 당신이 할 수있는 것 https://docs.python.org/3.5/library/atexit.html

원하는 것이 무엇이든간에 모든 것이 끝나면 누군가에게 전체 모듈을 다시 시작하는 옵션을 제공하십시오. 그러면 exec 호출에 대한 의존도가 제거되고 정확히 동일한 예상 기능을 얻는 데보다 일관되고 간단한 방법이됩니다.

+0

도움을 주셔서 감사합니다. 대단히 감사합니다. 하지만 exec (...를 main()으로 바꾸면 두번 실행 한 다음 종료합니다. argv를 사용하여 지금까지 아무 작업도하지 않으려 고 노력했지만 계속 시도 할 것입니다/ –

+0

위에서 말했듯이, main 메소드를 옵션 인자로 지정하고 exec 대신에 restart 메소드를 업데이트하여'AskRestart' 매개 변수에 대해'True' 또는'False' 값으로 main을 호출하도록합니다. 위의 링크에있는 문서를 참고하십시오) 실행을 시작하는 atexit 메소드로'restart'를 지정하면, 다시 시작을 통해 다시 호출되는'main'을 얻을 것입니다. 만약 당신이 영원히 "재시작"하고 싶다면'atexit' , 단지'AskRestart'가 설정된 상태로 main을 재시작하고,'if (AskRestart)'를 다시 재귀 호출하십시오. –

+0

오, 알겠습니다. 도움을 청하고 인내심을 가져 주셔서 다시 한번 감사드립니다! –

0

main()을 메인으로 지속적으로 다시 시작한다는 목표가 확실치 않지만 (아직 아무것도하지 않는 빈 함수이지만 ...) 지속적으로 메인을 유지하는 한 가지 방법 이것은 또한 도움이

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 

희망 : 사용자가 xwhile True 루프를 사용할 수 있습니다 들어갈 때까지 반복!

+0

Worked Great! 다시 한번 감사드립니다! –