On this page
15. Appendix
15.1. 互动模式
15.1.1. 错误处理
发生错误时,解释器将显示错误消息和堆栈跟踪。在交互模式下,然后返回到主提示符;当 Importing 来自文件时,它在打印堆栈跟踪后以非零退出状态退出。 (在这种情况下,由try语句中的except子句处理的异常不是错误。)某些错误是无条件致命的,并导致退出的退出非零;这适用于内部不一致以及某些情况下内存不足。所有错误消息均写入标准错误流;执行命令的正常输出将写入标准输出。
将break字符(通常是 Control-C 或 Delete)键入到主提示或辅助提示会取消 Importing 并返回到主提示。 [1]在执行命令时键入break会引发KeyboardInterrupt异常,该异常可由try语句处理。
15.1.2. 可执行的 Python 脚本
在 BSD 式的 Unix 系统上,可以将 Python 脚本像 shell 脚本一样直接执行,只需将代码行
#!/usr/bin/env python
(假设解释器位于用户的 PATH
上),并为文件提供可执行模式。 #!
必须是文件的前两个字符。在某些平台上,第一行必须以 Unix 样式的行尾('\n'
)结尾,而不是 Windows('\r\n'
)行尾。请注意,井号或井号字符'#'
用于在 Python 中启动 Comments。
可以使用 chmod 命令为脚本提供可执行模式或权限。
$ chmod +x myscript.py
在 Windows 系统上,没有“可执行模式”的概念。 Python 安装程序会自动将.py
文件与python.exe
关联,以便双击 Python 文件将其作为脚本运行。extensions 也可以是.pyw
,在这种情况下,通常出现的控制台窗口将被取消。
15.1.3. 交互式启动文件
交互式使用 Python 时,每次启动解释器时都执行一些标准命令通常很方便。您可以pass将名为 PYTHONSTARTUP的环境变量设置为包含启动命令的文件的名称来执行此操作。这类似于 Unix shell 的.profile
Function。
仅在交互式会话中读取此文件,而不是在 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)
15.1.4. 定制模块
Python 提供了两个钩子供您自定义它:sitecustomize
和usercustomize
。要查看其工作原理,首先需要找到用户 site-packages 目录的位置。启动 Python 并运行以下代码:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python2.7/site-packages'
现在,您可以在该目录中创建一个名为usercustomize.py
的文件,并将所需的任何内容放入其中。除非使用-s选项启动以禁用自动导入,否则它将影响 Python 的每次调用。
sitecustomize
的工作方式相同,但通常由计算机 Management 员在全局 site-packages 目录中创建,并在usercustomize
之前导入。有关更多详细信息,请参见site模块的文档。
Footnotes
- [1]
- GNU Readline 软件包出现问题可能会阻止这种情况。