1.3 与命令行进行交互的几项技巧
下面是与命令行进行交互的几项技巧。
· 使用向上箭头键得到以前的命令
命令行窗口和终端窗口的一个美妙功能是,你可以通过按向上箭头键找到以前输入的命令。试着在命令行窗口或终端窗口中按一下向上箭头键,找到你以前输入的命令,在 Windows 系统中是 python first_script.py,在 Mac 系统中是 ./first_script.py。
这个功能非常方便,可以减少每次运行 Python 脚本时必需的输入量,特别是当 Python 脚本的文件名特别长或需要在命令行上提供额外的参数(比如输入文件名或输出文件名)的时候。
· 用 Ctrl+c 停止脚本
既然你已经学会了运行脚本,那么是时候学习一下如何中断和停止 Python 脚本了。在相当多的情况下,你应该知道如何停止脚本。例如,你可能会写出死循环代码,这样脚本就永远不会停止运行。另外一种情况是,你编写的代码可能需要很长时间才能执行完毕,如果你在代码中包含了 print 语句,并由此发现脚本不会生成需要的输出,这时就应该提前终止脚本。
在脚本开始运行之后,如果想随时中断或停止脚本,可以按 Ctrl+c(Windows)或 Control+c(macOS)。这会停止通过命令开始的进程。你不用太在意这项技术的细节,只要知道进程是计算机对一系列命令的处理过程就可以了。你编写了一个脚本或程序,计算机将它解释成一个进程,如果这个程序非常复杂,就解释成一系列进程,这些进程或者顺序执行,或者并发执行。
· 读懂出错信息并找到解决方案
这部分的主题是如何处理比较麻烦的脚本,也简单说一下遇到以下问题应该如何解决。当你输入了 ./python first_script.py,或者试图运行任何一个 Python 脚本的时候,脚本没有正确运行,命令行窗口或终端窗口显示了出错信息。首先不要慌张,先读懂出错信息。某些情况下,出错信息中明确指出了代码中出现错误的行,你可以将精力集中在这一行上来纠正错误(你的文本编辑器或 IDE 应该设置成显示行号;如果不自动显示行号,请在菜单中找一下或在网上快速搜索一下,弄清楚如何显示行号)。重要的是要知道出错信息也是编程的一部分,学会编码也包括学会如何有效地调试程序错误。
更重要的是,因为出错信息是通用的,所以通常很容易学会如何调试程序错误。你很可能不是第一个遇到这种错误并在网上搜索解决方案的人。最好的做法是将整个错误信息(至少是信息的主要部分)复制到搜索引擎(例如:Google 或者 Bing)上,然后在搜索结果中仔细研究其他人是如何调试这种错误的。
熟悉 Python 内置的异常对象也是非常有帮助的,这样你就可以识别出标准的出错信息并知道如何改正错误。你可以在 Python 标准库页面(http://docs.python.org/3/library/exceptions.html)找到 Python 内置的异常,但是在网上通过出错信息搜索其他人的解决方案也是非常有用的。
· 向 first_script.py 添加更多的代码
现在,为了更熟练地编写 Python 代码和运行 Python 脚本,试着对 first_script.py 进行编辑,添加更多的代码,然后重新运行脚本。在进行新的练习时,可以把本章提供的代码段添加到脚本中原来代码的下方,保存脚本,然后重新运行。
举个例子,将下面的两段代码添加到原有的 print 语句下面,然后保存脚本并重新运行(请记住,如果你使用的是命令行窗口或终端窗口,在将这些代码添加到 first_script.py 并重新保存脚本之后,可以按向上箭头键,找到你用来运行脚本的命令,不需要将命令重新输入一遍):
# 两个数值相加 x = 4 y = 5 z = x + y print("Output #2: Four plus five equals {0:d}.".format(z)) # 两个列表相加 a = [1, 2, 3, 4] b = ["first", "second", "third", "fourth"] c = a + b print("Output #3: {0}, {1}, {2}".format(a, b, c))
以 # 开头的行是注释,用来解释代码,描述代码的用途和目的。
第一个示例展示了将数值赋给变量、变量相加和格式化 print 语句的方法。这里详细说明一下 print 语句中的语法 "{0:d}".format(z)。花括号({})是一个占位符,表示这里将要传入 print 语句一个具体的值,这里就是变量 z 的值。0 指向 format() 方法中的第一个参数,在这里,只包含一个参数 z,所以 0 就指向这个值;相反,如果有多个参数,0 就确定地表示传入第一个参数。
冒号(:)用来分隔传入的值和它的格式。d 表示这个值应该被格式化为整数,没有小数部分。在下一节中,你将会学习如何设定小数位数来显示浮点数。
第二个示例展示了创建列表、列表相加和将列表中的值以逗号分隔打印在屏幕上的方法。看一下 print 语句中的语法 "{0}, {1}, {2}".format(a, b, c),它说明了如何在 print 语句中包含多个值。a 被传给 {0},b 被传给 {1},c 被传给 {2}。因为这 3 个值都是列表,不是数值,所以不设置数值格式。本章后面的小节会对这部分内容进行更深入的讨论。
为什么要在打印时使用 .format
Python 并不要求每条 print 语句都必须使用 .format,但是 .format 确实功能强大,可以为你节省很多输入。在上面的示例中,注意 print("Output #3: {0}, {1}, {2}".format(a, b, c)) 的最终结果是用逗号分隔的 3 个变量。如果你想在不使用 .format 的情况下得到同样的结果,那么就应该这样写:print("Output #3: ",a,", ",b,", ",c),但这是一段非常容易出现输入错误的代码。后面还会介绍 .format 的其他用法,但是从现在开始,你就应该熟练掌握它的用法,以便在需要的时候加以使用。
图 1-7 和图 1-8 展示了在 Anaconda Spyder 和 Notepad++ 中添加新代码的界面。
图 1-7:在 Anaconda Spyder 中为 first_script.py 添加新代码
图 1-8:在 Notepad++(Windows)中为 first_script.py 添加新代码
如果你将前面的代码添加到了 first_script.py 中,那么当你保存并且重新运行脚本之后,会看到屏幕中有如下输出(参见图 1-9):
Output #1: I'm excited to learn Python. Output #2: Four plus five equals 9. Output #3: [1, 2, 3, 4], ['first', 'second', 'third', 'fourth'], [1, 2, 3, 4, 'first', 'second', 'third', 'fourth']
图 1-9:在命令行窗口中运行添加了代码之后的 first_script.py
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论