16. 附录

16.1. 交互模式

16.1.1. 错误处理

当发生错误时,解释器将打印错误消息和堆栈跟踪。在交互模式下,它随后返回主提示;当输入来自文件时,它在打印堆栈跟踪后以非零退出状态退出。(异常由 except A中的子句 try 语句在此上下文中不是错误。)某些错误是无条件致命的,会导致出口非零;这适用于内部不一致和某些内存不足的情况。所有错误消息都写入标准错误流;执行命令的正常输出写入标准输出。

键入中断字符(通常 Control-CDelete )到主提示或辅助提示取消输入并返回主提示。 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.ps1sys.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提供了两个钩子让您自定义它: sitecustomizeusercustomize . 要了解它是如何工作的,您需要首先找到用户站点包目录的位置。启动python并运行以下代码:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.5/site-packages'

现在您可以创建一个名为 usercustomize.py 把你想要的东西放在那个目录里。它将影响每次调用python,除非它以 -s 用于禁用自动导入的选项。

sitecustomize 工作方式相同,但通常由计算机管理员在全局站点包目录中创建,并在导入之前 usercustomize . 参见 site 模块了解更多详细信息。

脚注

1

GNU readline包的问题可能会阻止这种情况。