返回介绍

input 的技巧

发布于 2024-01-29 22:24:17 字数 1935 浏览 0 评论 0 收藏 0

不幸的是,在Windows中,点击文件图标的结果也许不是特别令人满意。事实上,就像刚才一样,这个例子的脚本在点击后产生了一个令人困惑的“一闪而过”的结果,而不是Python程序的入门者所期盼的结果反馈。这不是Bug,但是需要做某种操作才能够让Windows处理打印的结果。

在默认情况下,Python会生成弹出一个黑色DOS终端窗口作为文件的输入或输出。如果脚本打印后退出了,也就是说,它仅是打印后退出终端窗口显示,然后文本在这里打印,但是在程序退出时,终端窗口关闭并消失。除非你反应非常快,或者是机器运行非常慢,否则看不到任何输出。尽管这是很正常的行为,但是这也许并不是你所想象的那样。

幸运的是,这样的问题很好解决。如果需要通过图标点击运行脚本,脚本输出后暂停,可以简单地在脚本的最后添加内置input函数的一条调用语句(Python 2.6中的raw_input,参见前面的注释)。例如:

一般来说,input读取标准输入的下一行,如果还没有得到的话一直等待输入。在这种情形下执行的实际效果就是让脚本暂停,因此能够显示如图3-2所示的输出窗口,直到按下回车键为止。

图 3-2 当在Windows中点击程序图标时,如果在脚本的最后包含一个input调用,将会得到其输出的窗口。但是只需要在这种情况下这样做

现在介绍的这个技巧,往往只在Windows中才是必要的,并且只是当脚本打印文本后退出或只是当通过点击文件图标运行脚本才是必要的。当且仅当以上这三个条件全部都生效时,才应当在顶层文件的最后增加这个调用。没有理由在任何其他的情况下在文件中增加这个调用(除非你超出常理地热衷于按下计算机的Enter键)[1]。这听起来是显而易见的事情,但确是现实的类中的另一个常见的错误。

在我们继续学习之前,注意在输入时所使用的input调用相当于在输出时使用的打印语句。这是读取用户输入的最简单的办法,并且实际上它比这个例子中的应用更全面。例如,input。

·可选的接受字符串,这些字符串将作为提示打印出来[例如,input('Press Enter to exit')]。

·以字符串的形式为脚本返回读入的文本[例如,nextinput=input()]。

·在系统shell的层面上支持输入流的重定向(例如,python spam.py<input.txt),就像输出时的打印语句一样。

在后续章节中,我们将会以更复杂的方法使用input。例如,第10章我们将会在交互循环中使用它。

注意:版本差异提示:如果你使用Python 2.6或者更早的版本,在这段代码中使用raw_input()而不要使用input()。在Python 3.0中,前者重新命名为后者。从技术上讲,Python 2.6也有一个input,但是,它对字符串求值,就好像它们是输入到一个脚本的程序代码一样,因此,该函数在这个环境中无效(一个空字符串会产生错误)。Python 3.0的input(以及Python 2.6的raw_input())直接把输入的文本作为一个字符串返回,而不会求值。要在Python 3.0中模拟Python 2.6的input,使用eval(input())。

[1]在Windows中,还有一种完全阻止弹出DOS终端窗口的方法。以pyw为扩展名的文件只显示由脚本构建的窗口,而不是默认的DOS终端窗口。pyw文件是拥有这种特别的窗口操作行为的.py文件。它们常常应用于Python编码的用户界面(这些用户界面构建自己的窗口),和各种其他技术一起使用,把打印完成的输出和错误保存到文件中。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文