15. 附录¶

15.1. 交互模�¶

15.1.1. 错误处�¶

有错误�生时,解释器会打�一个错误信�和栈跟踪器。在交互模�下,它返回主�示符,如果从文件输入执行,它在打�栈跟踪器�以�零状�退出。(异常�以由 try 语�中的 except ���控制,这样就�会出现上文中的错误信�) 有一些�常致命的错误会导致�零状�下退出,这通常由内部矛盾和内存溢出造�。所有的错误信�都写入标准错误�;命令中执行的普通输出写入标准输出。

在主�示符或从属�示符中输入中断符 (通常是 Control-C 或者 DEL) 就会�消当�输入,回到主命令行。[1] 执行命令时输入一个中断符会抛出一个 KeyboardInterrupt 异常,它�以被 try 语�截获。

15.1.2. 执行 Python 脚本¶

BSD 类的 Unix 系统中,Python 脚本�以� Shell 脚本那样直接执行。��在脚本文件开头写一行命令,指定文件和模�:

#! /usr/bin/env python

(首先�确认 Python 解释器在用户的 PATH 中) #! 必须是文件的�两个字符,在�些平�上,第一行必须以 Unix 风格的行结�符 ('\n')结�,�能用 Windows ('\r\n') 的结�符。注�,'#' 是 Python 中是行注释的起始符。

脚本�以通过 chmod 命令指定执行模�和��。

$ chmod +x myscript.py

Windows 系统上没有“执行模��。Python 安装程�自动将 .py 文件关�到 python.exe ,所以在 Python 文件图标上�击,它就会作为脚本执行。�样 .pyw 也�了这样的关�,通常它执行时�会显示控制�窗�。

15.1.3. 交互执行文件¶

使用 Python 解释器的时候,我们�能需�在�次解释器�动时执行一些命令。你�以在一个文件中包�你想�执行的命令,设定一个�为 PYTHONSTARTUP 的环境���指定这个文件。这类似于 Unix shell 的 .profile 文件。

这个文件在交互会�期是�读的,当 Python 从脚本中解读文件或以终端 /dev/tty �为外部命令�时则�会如此 (尽管它们的行为很�是处在交互会�期) 它与解释器执行的命令处在�一个命�空间,所以由它定义或引用的一切�以在解释器中���制地使用。你也�以在这个文件中改� sys.ps1 和 sys.ps2 指令。

如果你想�在当�目录中执行附加的�动文件,�以在全局�动文件中加入类似以下的代�:if os.path.isfile('.pythonrc.py'): execfile('.pythonrc.py')。如果你想�在�个脚本中使用�动文件,必须�在脚本中写入这样的语�:

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)

15.1.4. 定制模�¶

Python �供了两个钩� (方法) �本地化: sitecustomize 和 usercustomize。为了�识它们,你首先需�找到你的 site-packages 的目录。�动 python 执行下�的代�:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python2.7/site-packages'

现在你�以在 site-packages 的目录下创建 usercustomize.py 文件,内容就悉�尊便了。这个文件将会影� python 的�次调用,除��动的时候加入 -s 选项�止自动导入。

sitecustomize 的工作方�一样,但是是由电脑的管�账户创建以�在 usercustomize 之�导入。具体�以�� site 。

Footnotes

[1]GNU Readline包的一个问题�能�止此功能。