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包的一个问题å�¯èƒ½ç¦�æ¢æ¤åŠŸèƒ½ã€‚ |