【问题标题】:Python, Press Any Key To ExitPython,按任意键退出
【发布时间】:2012-08-06 06:39:20
【问题描述】:

所以,正如标题所说,我想要一个正确的代码来关闭我的 python 脚本。 到目前为止,我使用了input('Press Any Key To Exit'),但这样做会产生错误。 我想要一个只关闭你的脚本而不使用错误的代码。

有人有想法吗?谷歌给了我输入选项,但我不想要那个 它使用此错误关闭:

Traceback (most recent call last):
  File "C:/Python27/test", line 1, in <module>
    input('Press Any Key To Exit')
  File "<string>", line 0

   ^
SyntaxError: unexpected EOF while parsing

【问题讨论】:

  • input =('Press Any Key To Exit') 你的意思是input('Press Any Key To Exit')?第一个不会做任何事情。另外,请尝试使用 raw_input()。
  • 第一个不会做任何事情,但它不应该抛出任何错误..它只会将名称输入重新绑定到该字符串
  • @wim 同意,这就是为什么我认为他输入了错误的问题并建议尝试raw_input()
  • 所以,我修复了上面的代码,删除了 =,我使用的是 python 2.7 btw

标签: python python-2.7 key any


【解决方案1】:

这个语法错误是由在 Python 2 上使用 input 引起的,它会尝试在终端提示符下键入 eval。如果你按下了 enter,那么 Python 基本上会尝试评估一个空字符串 eval(""),这会导致 SyntaxError 而不是通常的 NameError

如果您对“any”键作为回车键感到满意,那么您可以简单地将其换成raw_input

raw_input("Press Enter to continue")

请注意,在 Python 3 上,raw_input 已重命名为 input

对于在搜索中发现此问题的用户,who really want to be able to press any key 退出提示并且不限于使用 enter,您可以考虑使用 3rd-party 库作为跨平台解决方案。我推荐使用pip install readchar 安装的辅助库readchar。它适用于 Linux、macOS 和 Windows 以及 Python 2 或 Python 3。

import readchar
print("Press Any Key To Exit")
k = readchar.readchar()

【讨论】:

  • 是的,这解决了它,但我看到有人回答这在 3.0 中不可用,所以如果我升级,我又卡住了?
  • @JoppeDnbCuyper: raw_input 在 Python 3.0 中重命名为 input,因此如果升级,只需将每个 raw_input 实例更改为 input
  • 输入在中很危险
  • 这在 mac 中非常有用,可以说“按 Enter 键继续”
【解决方案2】:

如果您在 Windows 上,那么 cmd pause 命令应该可以工作,尽管它显示“按任意键继续”

import os
os.system('pause')

linux的替代品是read,可以在here找到一个很好的描述

【讨论】:

    【解决方案3】:

    如果可以避免使用 python 中的平台特定函数,我会反对它们,但你可以使用内置的 msvcrt 模块。

    from msvcrt import getch
    
    junk = getch() # Assign to a variable just to suppress output. Blocks until key press.
    

    【讨论】:

      【解决方案4】:

      这是一种在 *nix 上按任意键结束的方法,不显示该键,不按返回。 (一般方法的功劳归于Python read a single character from the user。)从 SO 的角度来看,您似乎可以使用msvcrt 模块在 Windows 上复制此功能,但我没有将它安装在任何地方进行测试。过度评论以解释发生了什么......

      import sys, termios, tty
      
      stdinFileDesc = sys.stdin.fileno() #store stdin's file descriptor
      oldStdinTtyAttr = termios.tcgetattr(stdinFileDesc) #save stdin's tty attributes so I can reset it later
      
      try:
          print 'Press any key to exit...'
          tty.setraw(stdinFileDesc) #set the input mode of stdin so that it gets added to char by char rather than line by line
          sys.stdin.read(1) #read 1 byte from stdin (indicating that a key has been pressed)
      finally:
          termios.tcsetattr(stdinFileDesc, termios.TCSADRAIN, oldStdinTtyAttr) #reset stdin to its normal behavior
          print 'Goodbye!'
      

      【讨论】:

        【解决方案5】:

        好的,我使用的是 Linux Mint 17.1 “Rebecca”,我似乎已经明白了,您可能知道 Linux Mint 安装了 Python,您无法对其进行更新,也无法在其之上安装其他版本。我发现 Linux Mint 中预装的 python 是 2.7.6 版本,所以以下内容肯定适用于 2.7.6 版本。如果您添加raw_input('Press any key to exit'),它不会显示任何错误代码,但会告诉您程序以代码0 退出。例如,这是我的第一个程序。 MyFirstProgram。请记住,这是我的第一个程序,我知道它很烂,但它是如何使用“按任意键退出”的一个很好的例子 顺便说一句,这也是我在这个网站上的第一篇文章,如果格式错误,请见谅。

        【讨论】:

        • 欢迎来到 StackOverflow!您应该像这样发布简短的 sn-ps 作为答案的一部分。编辑器提供代码块和内联代码工具来支持您。这将使您的答案更容易被其他人阅读。在help center 中阅读有关如何写出好的答案的更多信息。
        • @DGxInfinitY 从一个 Linux Mint 粉丝到另一个。我从你尝试做的事情中学到了艰难的方法。 Linux Mint,可能任何 Linux 都带有“系统 python”,通常是 2 和 3。这可能是可能的,但你不应该弄乱它,升级它,降级它,安装模块到它。使用 'virtualenv' 和 'virtualenvwrapper',方便,保持系统 Python 干净。否则有一天,你可能会对系统 Python 做一些事情并重新启动,然后 gui 和其他东西就会被破坏。
        【解决方案6】:

        这个游戏有点晚了,但几年前我写了一个库来做到这一点。它公开了带有可自定义消息的pause() 函数和受this answer 启发的更通用的跨平台getch() 函数。

        使用pip install py-getch 安装,并像这样使用它:

        from getch import pause
        pause()
        

        默认打印'Press any key to continue . . .'。提供自定义消息:

        pause('Press Any Key To Exit.')
        

        为方便起见,它还附带了一个变体,只需一步即可调用sys.exit(status)

        pause_exit(0, 'Press Any Key To Exit.')
        

        Check it out.

        【讨论】:

          【解决方案7】:

          在 Windows 中:

          if msvcrt.kbhit():
              if msvcrt.getch() == b'q':
                  exit()
          

          【讨论】:

          • 请添加一些解释。
          • 该死的你们6年后回来了。我猜还是没有正确答案哈?
          【解决方案8】:
          a = input('Press a key to exit')
          if a:
              exit(0)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-02-24
            • 1970-01-01
            • 2023-03-20
            • 2021-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多