如何防止程序完成执行时关闭命令窗口
Posted
技术标签:
【中文标题】如何防止程序完成执行时关闭命令窗口【英文标题】:How to prevent command window from closing when a program finishes executing 【发布时间】:2012-11-08 01:17:05 【问题描述】:我用 Python (.py) 编写了一个小程序,并使用 Py2exe 将其转换为 Windows 可执行文件 (.exe)。它要求一个字符串,然后输出一个字符串——非常简单! -- 并且在 Python 中完美运行。
但是,当 exe 文件在命令窗口中完成执行时,命令窗口会在我看到它的输出之前自动关闭(我假设它确实会打印输出,因为正如我所说,它在 Python 中完美运行) .
如何防止这种情况发生?我假设我需要更改我的代码,但我究竟需要添加什么?
这是我的代码,以防它帮助你看到它(它是一个文字包装器):
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)
谢谢。
【问题讨论】:
你总是可以在程序末尾添加 raw_input() ,所以你必须按 enter 退出窗口。 【参考方案1】:最简单的方法可能是在程序完成之前使用raw_input()
。它会等到你按下回车键才关闭。
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()
【讨论】:
谢谢!我也意识到当 exe 版本运行并要求用户输入时,用户无法使用鼠标右键单击粘贴文本(命令提示符对右键单击无响应)。因此,用户必须手动输入文本。你知道为什么会发生这种情况吗?再次感谢。 您可以通过右键单击菜单栏将文本粘贴到命令提示符,然后选择“编辑”,然后选择“粘贴”。 是的,烦人的 windows cmd.exe 东西。 其实,@wim,这与cmd.exe
没有任何关系,那只是一个命令解释器。我认为你正在寻找的罪魁祸首是控制台子系统(或 CSRSS 或类似的东西)。【参考方案2】:
只需将其放在代码的末尾即可:
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: ")
【讨论】:
我更喜欢写“Press Enter to continue...”或类似的写法,因为“enter”和“exit”的对立面让提示看起来措辞很尴尬 @wim:所以我不是唯一一个发现自己在寻找“退出”键的人? :) @wim,你的意思是像按开始按钮来关闭 Windows? :-) 我会听从你的判断。【参考方案3】:这是我在脚本中使用的:
#### 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()
######################
但有时,我只是使用以下方法使窗口在关闭前保持打开一小段时间。
import time
time.sleep(3)
【讨论】:
以上是关于如何防止程序完成执行时关闭命令窗口的主要内容,如果未能解决你的问题,请参考以下文章