2012-11-08 6 views
1

Python (.py)으로 만든 작은 프로그램을 Py2exe를 사용하여 Windows 실행 파일 (.exe)로 변환했습니다. 그것은 문자열을 요구 한 다음 문자열을 출력합니다 - 매우 간단합니다! - 그리고 파이썬에서 완벽하게 작동합니다.프로그램 실행 완료시 명령 창이 닫히는 것을 막는 방법

그러나 exe 파일이 명령 창에서 실행을 끝내면 명령 창이 자동으로 닫히기 때문에 출력 결과를 볼 수 있습니다. (말했던 것처럼 출력이 파이썬에서 완벽하게 작동하기 때문입니다.).

어떻게 이런 일이 일어나지 않도록 할 수 있습니까? 내 코드를 변경해야한다고 가정하지만 정확히 무엇을 추가해야합니까?

import string 

def insertNewlines(text, lineLength): 
    if text == '': 
     return '' 
    elif len(text) <= lineLength: 
     return text 
    elif text[lineLength] == ' ': 
     return text[:lineLength] + '\n' + insertNewlines(text[lineLength+1:], lineLength) 
    elif text[lineLength-1] == ' ': 
     return text[:lineLength] + '\n' + insertNewlines(text[lineLength:], lineLength) 
    else: 
     if string.find(text, ' ', lineLength) == -1: 
      return text 
     else: 
      return text[:string.find(text,' ',lineLength)+1] + '\n' + insertNewlines(text[string.find(text,' ',lineLength)+1:], lineLength) 
    print 

if __name__ == '__main__': 
    text = str(raw_input("Enter text to word-wrap: ")) 
    lineLength = int(raw_input("Enter number of characters per line: ")) 
    print 
    print insertNewlines(text, lineLength) 

감사합니다 : 그것은 (그것이 단어 래퍼)를 참조하는 데 도움이 경우 다음

, 내 코드입니다.

+1

프로그램 끝에는 항상 raw_input()을 추가 할 수 있으므로 입력을 눌러 창을 종료해야합니다. – javanut13

답변

1

가장 간단한 방법은 프로그램이 완료되기 바로 전에 raw_input()을 사용하는 것입니다. 닫을 때까지 Enter 키를 누르기 전까지 기다릴 것입니다.

if __name__ == '__main__': 
    text = str(raw_input("Enter text to word-wrap: ")) 
    lineLength = int(raw_input("Enter number of characters per line: ")) 
    print 
    print insertNewlines(text, lineLength) 
    raw_input() 
+0

감사합니다. 또한 exe 버전이 실행되고 사용자에게 입력을 요청하면 마우스 오른쪽 버튼을 사용하여 텍스트를 붙여 넣을 수 없습니다 (명령 프롬프트는 마우스 오른쪽 버튼 클릭에 응답하지 않음). 따라서 사용자는 텍스트를 직접 입력해야합니다. 왜 이런 일이 일어날 지 아십니까? 다시 한번 감사드립니다. –

+0

메뉴 표시 줄을 마우스 오른쪽 버튼으로 클릭 한 다음 '편집'을 선택하고 '붙여 넣기'를 선택하여 명령 프롬프트에 텍스트를 붙여 넣을 수 있습니다. – grc

+0

예, 귀찮은 창 cmd.exe 문제. – wim

1

그냥 코드의 끝 부분에이를 넣어 : 즉

junk = raw_input ("Hit ENTER to exit: ") 

, 당신의 main 세그먼트는해야한다 :

if __name__ == '__main__': 
    text = str(raw_input("Enter text to word-wrap: ")) 
    lineLength = int(raw_input("Enter number of characters per line: ")) 
    print 
    print insertNewlines(text, lineLength) 
    junk = raw_input ("Press ENTER to continue: ") 
+0

나는 "Enter를 눌러 계속하십시오 ..."와 유사하거나 "exit"와 반대되는 것이 프롬프트를 어색하게 말하게 만듭니다. – wim

+0

@wim : 그래서 나는 자신을 찾고있는 유일한 사람이 아닙니다. "Exit"키? :) – abarnert

+0

@wim, Windows를 종료하기 위해 시작 버튼을 누르는 것과 같은 의미입니까? :-) 나는 당신의 판단을 미룰 것입니다. – paxdiablo

0

이것은 내가 내 스크립트에서 사용하는 것입니다 :

#### windows only #### 
import msvcrt 

def readch(echo=True): 
    "Get a single character on Windows." 
    while msvcrt.kbhit(): 
     msvcrt.getch() 
    ch = msvcrt.getch() 
    while ch in b'\x00\xe0': 
     msvcrt.getch() 
     ch = msvcrt.getch() 
    if echo: 
     msvcrt.putch(ch) 
    return ch.decode() 

def pause(prompt='Press any key to continue . . .'): 
    if prompt: 
     print prompt, 
    readch() 
###################### 

S ometimes 그래도, 나는 단지 창문을 잠시 동안 열어두기 전에 다음과 같이 사용한다.

import time 
time.sleep(3) 
관련 문제