//文章

15. 附录

15.1.交互模式

15.1.1. 错误处理

当错误发生时,解释器会输出错误信息和堆栈追踪。在交互模式下,Python解释器会返回主提示符;如果是从文件输入,它会在输出堆栈追踪后以非零状态退出。(
except子句在try语句处理的异常都没有在这方面的错误。) 一些错误是非常致命的,同时导致以非零状态退出。这适用于内部矛盾和内存溢出的一些情况。所有的错误信息都写入标准错误流;从执行命令的普通输出写入标准输出。

在主从提示符下输入中断符(通常是Control-C或者DEL键),取消输入然后回到主提示符。[1]在命令执行的时候输入中断符会导致 KeyboardInterrupt 异常,这个异常会被 try 单元处理。

15.1.2. Python可执行脚本

在类UNIX系统上,Python脚本可以被直接执行,就像直接输入shell脚本一样。

#!/usr/bin/env python3.4

(将用户路径通知解释器) “#!”必须是文件的前两个字符,在某些平台上,第一行必须以Unix风格的行结束符 (“\n”)结束,不能用Mac(“\r”)或Windows(“\r\n”)的结束符。注意,“#”是Python中是行注释的 起始符。

该脚本可以给出一个可执行的方式,或许可,使用chmod命令。

$ chmod +x myscript.py

在Windows系统中,没有“可执行模式”的概念。Python的安装程序python.exe会自动关联.py文件,所以可以作为一个脚本双击运行它。使用.pyw扩展也可以,在这种情况下,通常显示的控制台窗口被限制。

15.1.3. 交互式启动文件

当您使用Python的交互方式,在解释器启动时它常常有一些很方便的命令。你可以通过设置一个名为PYTHONSTARTUP的环境变量做到这一点,让包含你的启动的文件名称。这是类似.profile文件在Unix Shell中。

该文件只会在交互Session中读取,而不是使用Python从脚本中读取命令,也不 是使用/dev/tty作为外部命令源(否则就像一个交互式会话)。它执行在交互式命令相同的命名空间,所以它定义的对象还有导入的都不能在交互的Session外。您还可以更改提示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/python3.4/site-packages'

现在你可以在该目录中创建一个文件名 ​为usercustomize.py,然后把你想要的任何东西写在里面。他会影响到Python的每次调用,除非在开始的时候采用 -s的选项来禁用自动导入。

sitecustomize的采用同样的方式,但通常是由计算机管理员在全局的site-packages目录创建,且在usercustomize导入之前。可以从site获取更多的信息。

脚注

1.使用GNU Readline软件包的一个问题可能会阻止这一点。

0 0

发表评论