一、错误处理
当程序发生错误时,解释器会打印出错误信息和栈回溯,如果在交互模式下运行程序,解释器会回到主命令提示符;如果输入内容来自文件,在打印栈回溯之后,程序将以非零的退出状态码退出。需要注意的是,这个上下文中所说的错误不包括 try 语句中已经被 except 子句所捕获的异常。
有些错误是无条件致命的,会导致程序以非零状态退出,比如内部逻辑矛盾或某些情况下的内存耗尽。所有错误信息都会被写入标准错误流;而命令的正常输出则被写入标准输出流。
将中断字符(通常为 Control-C 或 Delete )键入主要或辅助提示符会取消输入并返回主提示符。 1 在执行命令时键入中断引发的 KeyboardInterrupt 异常,可以由 try 语句处理。
二、Python脚本
在 BSD 等类Unix系统上,Python 脚本像 shell 脚本一样可以直接执行,通过在第一行添加:
#!/usr/bin/env python3.5
(假设解释器位于用户的 PATH )脚本的开头,并将文件设置为可执行。 #! 必须是文件的前两个字符。在某些平台上,第一行必须以Unix样式的行结尾(’\n’)结束,而不是以Windows(’\r\n’)行结尾。注意,“散列字符”,或者说“磅字符”, ‘#’ ,在Python中代表注释开始。
可以使用 chmod 命令为脚本提供可执行模式或权限。
chmod +x myscript.py
在Windows系统上,没有“可执行模式”的概念。 Python安装程序自动将 .py 文件与 python.exe 相关联,这样双击Python文件就会将其作为脚本运行。此外,还可以使用 .pyw 扩展名创建扩展模块,在这种情况下,通常会隐藏控制台窗口。
三、交互式启动文件
当以交互模式使用 Python 时,可以通过设置环境变量 PYTHONSTARTUP 来指定一个包含启动命令的文件。Python解释器会在每次启动时自动执行该文件中的命令。这个文件类似于 Unix shell 中的 .profile 文件,可以用于在启动 Python 解释器之前执行一些自定义的初始化操作。
Python 只有在交互模式时,才会读取此文件,而非在从脚本读指令或是将 /dev/tty 显式作为被运行的 Python 脚本的文件名时(后者反而表现得像一个交互式会话)。这个文件与交互式指令共享相同的命名空间,所以它定义或导入的对象可以在交互式会话中直接使用,也可以在该文件中更改提示符 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)
四、定制模块
Python 提供了两个钩子供进行自定义:
- sitecustomize
- usercustomize
要了解它是如何工作的,首先需要找到用户 site-packages 目录的位置。 启动 Python 并运行以下代码:
>>>import site >>>site.getusersitepackages() '/home/user/.local/lib/python3.5/site-packages'
现在,可以在该目录中创建一个名为 usercustomize.py 的文件,并将所需内容放入其中。它会影响Python的每次启动,除非它以 -s 选项启动,以禁用自动导入。
sitecustomize 的工作方式相同,但通常由计算机管理员在全局 site-packages 目录中创建,并在 usercustomize 之前导入。