我正在使用PythonWin。如果在IDE中我单击Run,则任何input()
命令将弹出为Windows消息框。但是在控制台中它们是打印的控制台命令。
我尝试在PythonWin中使用msvcrt.getch()
,每次都返回字符\xFF
。
如果它在控制台中,我希望我的程序使用msvcrt.getch()
,如果它在PythonWin中,我希望input()
。那么,我的程序如何判断它正在运行哪一个?
答案 0 :(得分:1)
通过PythonWin运行时,我可以通过步入input()
的源代码来找出解决方案。我在这里发帖,以便遇到这个问题的其他人有解决方案。
"pywin.framework.startup" in sys.modules
为True
,而在控制台中运行时为False
。
所以我的代码看起来像这样:
if "pywin.framework.startup" in sys.modules:
move = raw_input(promptstr)
else:
print(promptstr)
move = msvcrt.getch()
答案 1 :(得分:1)
您可以使用os.isatty
检查您是在常规shell(python.exe)还是自定义shell(IPython,PythonWin,DreamPie ...)中:
import os
import sys
import io
try:
if os.isatty(sys.stdin.fileno()):
print "msvcrt.getch() will work."
else:
print "msvcrt.getch() will fail."
except (AttributeError, io.UnsupportedOperation):
print "msvcrt.getch() will fail."