16. 附錄?

16.1. 交互模式?

16.1.1. 錯誤處理?

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

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

16.1.2. 可執行的Python腳本?

在BSD等類(lèi)Unix系統上,Python腳本可以直接執行,就像shell腳本一樣,第一行添加:

#!/usr/bin/env python3.5

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

可以使用 chmod 命令為腳本提供可執行模式或權限。

$ chmod +x myscript.py

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

16.1.3. 交互式啟動(dòng)文件?

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

此文件只會(huì )在交互式會(huì )話(huà)時(shí)讀取,而非在 Python 從腳本讀取指令或是在給定 /dev/tty 為指令的明確來(lái)源時(shí)(后者反而表現得像是一個(gè)交互式會(huì )話(huà))。 該文件執行時(shí)所在的命名空間與交互式指令相同,所以它定義或導入的對象可以在交互式會(huì )話(huà)中直接使用。 你也可以在該文件中更改提示符 sys.ps1sys.ps2。

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

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提供了兩個(gè)鉤子來(lái)讓你自定義它:sitecustomizeusercustomize。要查看其工作原理,首先需要找到用戶(hù)site-packages目錄的位置。啟動(dòng)Python并運行此代碼:

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

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

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

備注

1

GNU Readline 包的問(wèn)題可能會(huì )阻止這種情況。