16. 附录¶
16.1. 交互模式¶
16.1.1. 错误处理¶
当发生错误时,解释器将打印错误消息和堆栈跟踪。在交互模式下,它随后返回主提示;当输入来自文件时,它在打印堆栈跟踪后以非零退出状态退出。(异常由 except
A中的子句 try
语句在此上下文中不是错误。)某些错误是无条件致命的,会导致出口非零;这适用于内部不一致和某些内存不足的情况。所有错误消息都写入标准错误流;执行命令的正常输出写入标准输出。
键入中断字符(通常 Control-C 或 Delete )到主提示或辅助提示取消输入并返回主提示。 1 在执行命令时键入中断会引发 KeyboardInterrupt
例外情况,可由 try
语句。
16.1.2. 可执行python脚本¶
在bsd'ish的UNIX系统上,可以直接执行python脚本,如shell脚本,方法是将行:
#!/usr/bin/env python3.5
(假设解释器位于用户的 PATH
)在脚本的开头,并为文件提供一个可执行模式。这个 #!
必须是文件的前两个字符。在某些平台上,第一行必须以unix样式的行结尾 ('\n'
)不是Windows ('\r\n'
)行尾。注意hash或pound字符, '#'
,用于在Python中启动注释。
可以使用 chmod 命令。
$ chmod +x myscript.py
在Windows系统上,没有“可执行模式”的概念。python安装程序自动关联 .py
档案带 python.exe
这样双击一个python文件就会以脚本的形式运行它。扩展也可以是 .pyw
在这种情况下,通常显示的控制台窗口将被抑制。
16.1.3. 交互启动文件¶
当以交互方式使用python时,每次启动解释器时执行一些标准命令通常很方便。可以通过设置名为 PYTHONSTARTUP
包含启动命令的文件名。这和 .profile
Unix shell的功能。
此文件仅在交互式会话中读取,而不是在Python从脚本中读取命令时读取,也不是在 /dev/tty
作为命令的显式源(否则其行为类似于交互式会话)。它在执行交互命令的同一命名空间中执行,这样它定义或导入的对象就可以在交互会话中无需限定即可使用。您还可以更改提示 sys.ps1
和 sys.ps2
在此文件中。
如果要从当前目录中读取其他启动文件,可以使用以下代码在全局启动文件中对其进行编程: if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read())
. 如果要在脚本中使用启动文件,必须在脚本中显式执行此操作::
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
with open(filename) as fobj:
startup_file = fobj.read()
exec(startup_file)
16.1.4. 自定义模块¶
python提供了两个钩子让您自定义它: sitecustomize
和 usercustomize
. 要了解它是如何工作的,您需要首先找到用户站点包目录的位置。启动python并运行以下代码:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.5/site-packages'
现在您可以创建一个名为 usercustomize.py
把你想要的东西放在那个目录里。它将影响每次调用python,除非它以 -s
用于禁用自动导入的选项。
sitecustomize
工作方式相同,但通常由计算机管理员在全局站点包目录中创建,并在导入之前 usercustomize
. 参见 site
模块了解更多详细信息。
脚注
- 1
GNU readline包的问题可能会阻止这种情况。