16. 附錄?

16.1. 交互模式?

16.1.1. 錯誤處理?

當(dāng)發(fā)生錯誤時,解釋器會打印錯誤信息和錯誤堆棧。在交互模式下,將返回到主命令提示符;如果輸入內(nèi)容來自文件,在打印錯誤堆棧之后,程序會以非零狀態(tài)退出。(這里所說的錯誤不包括 try 語句中由 except 所捕獲的異常。)有些錯誤是無條件致命的,會導(dǎo)致程序以非零狀態(tài)退出;比如內(nèi)部邏輯矛盾或內(nèi)存耗盡。所有錯誤信息都會被寫入標(biāo)準(zhǔn)錯誤流;而命令的正常輸出則被寫入標(biāo)準(zhǔn)輸出流。

將中斷字符(通常為 Control-CDelete )鍵入主要或輔助提示會取消輸入并返回主提示符。 1 在執(zhí)行命令時鍵入中斷引發(fā)的 KeyboardInterrupt 異常,可以由 try 語句處理。

16.1.2. 可執(zhí)行的Python腳本?

在BSD等類Unix系統(tǒng)上,Python腳本可以直接執(zhí)行,就像shell腳本一樣,第一行添加:

#!/usr/bin/env python3.5

(假設(shè)解釋器位于用戶的 PATH )腳本的開頭,并將文件設(shè)置為可執(zhí)行。 #! 必須是文件的前兩個字符。在某些平臺上,第一行必須以Unix樣式的行結(jié)尾('\n')結(jié)束,而不是以Windows('\r\n')行結(jié)尾。請注意,散列或磅字符 '#' 在Python中代表注釋開始。

可以使用 chmod 命令為腳本提供可執(zhí)行模式或權(quán)限。

$ chmod +x myscript.py

在Windows系統(tǒng)上,沒有“可執(zhí)行模式”的概念。 Python安裝程序自動將 .py 文件與 python.exe 相關(guān)聯(lián),這樣雙擊Python文件就會將其作為腳本運(yùn)行。擴(kuò)展也可以是 .pyw ,在這種情況下,會隱藏通常出現(xiàn)的控制臺窗口。

16.1.3. 交互式啟動文件?

當(dāng)您以交互方式使用Python時,每次啟動解釋器時都會執(zhí)行一些標(biāo)準(zhǔn)命令,這通常很方便。您可以通過將名為 PYTHONSTARTUP 的環(huán)境變量設(shè)置為包含啟動命令的文件名來實現(xiàn)。這類似于Unix shell的 .profile 功能。

This file is only read in interactive sessions, not when Python reads commands from a script, and not when /dev/tty is given as the explicit source of commands (which otherwise behaves like an interactive session). It is executed in the same namespace where interactive commands are executed, so that objects that it defines or imports can be used without qualification in the interactive session. You can also change the prompts sys.ps1 and sys.ps2 in this file.

如果你想從當(dāng)前目錄中讀取一個額外的啟動文件,你可以使用像 if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) 這樣的代碼在全局啟動文件中對它進(jìn)行編程。如果要在腳本中使用啟動文件,則必須在腳本中顯式執(zhí)行此操作:

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)

16.1.4. 定制模塊?

Python提供了兩個鉤子來讓你自定義它:sitecustomizeusercustomize。要查看其工作原理,首先需要找到用戶site-packages目錄的位置。啟動Python并運(yùn)行此代碼:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.5/site-packages'

現(xiàn)在,您可以在該目錄中創(chuàng)建一個名為 usercustomize.py 的文件,并將所需內(nèi)容放入其中。它會影響Python的每次啟動,除非它以 -s 選項啟動,以禁用自動導(dǎo)入。

sitecustomize 以相同的方式工作,但通常由計算機(jī)管理員在全局 site-packages 目錄中創(chuàng)建,并在 usercustomize 之前被導(dǎo)入。有關(guān)詳情請參閱 site 模塊的文檔。

備注

1

GNU Readline 包的問題可能會阻止這種情況。