python的sys模塊是與python解釋器交互的一個介面,提供對解釋器使用或維護的一些變數的訪問,即與解釋器強烈交互的函數。 sys模塊的常用函數: 1.sys.argv:命令行參數列表。第一個元素是腳本的名稱,後面是終端傳入的值;可以在執行整個程式前通過終端傳入參數,然後執行程式,實現從程式外 ...
python的sys模塊是與python解釋器交互的一個介面,提供對解釋器使用或維護的一些變數的訪問,即與解釋器強烈交互的函數。
sys模塊的常用函數:
1.sys.argv:命令行參數列表。第一個元素是腳本的名稱,後面是終端傳入的值;
可以在執行整個程式前通過終端傳入參數,然後執行程式,實現從程式外部向程式內部來傳遞參數。
2.sys.path:返回模塊的搜索路徑的列表。可以將寫好的模塊放在得到的某個路徑下,就可以在程式中import時正確找到。也可以使用 sys.path.append(path)添加模塊搜索路徑。
3.sys.exit(n):退出解釋器,n=0為正常退出,其他為異常退出。一般情況下執行到主程式末尾,解釋器自動退出。但是如果需要中途退出 程式,可以調用sys.exit函數。【註意】exit()運用在互動式shell中,而sys.exit主要用於程式中,二者功能類似。
4.sys.modules:python啟動時就被導入的所有模塊,以及import 導入的模塊存放的一個字典 key為模塊的名稱,value為模塊對應的內 存地址。sys.modules
是一個全局字典,該字典是python啟動後就載入在記憶體中。每當導入新的模塊,sys.modules
將自動記錄該模塊。當第二次再導入該模塊時,python會直接到字典中查找,從而加快了程式運行的速度。它擁有字典所擁有的一切方法。
5.sys.version:獲取Python解釋程式的版本信息。
6.sys.platform:返回操作系統平臺名稱。如:win32、Linux等。
7.sys.stdin/sys.stdout:標準輸入/標準輸出。如果需要更好地控制輸出,而print不能滿足要求時,可以使用它們。
8.sys.getdefaultencoding() :獲取系統當前編碼,一般預設為ascii。9.sys.setdefaultencoding() :設置系統預設編碼,執行dir(sys)時不會看到這個方法,在解釋器中執行不通過,可以先執行reload(sys),在執行 setdefaultencoding('utf8'),此時將系統預設編碼設置為utf8。
10.sys.getfilesystemencoding() :獲取文件系統使用編碼方式,例如:mac下返回'utf-8'。
函數演示:
1.假設sys.py腳本文件內容如下:
1 #!/usr/bin/env python 2 3 import sys 4 print(sys.argv[0]) 5 print(sys.argv[1])
命令行執行:python sys.py first ,則輸出:
1 sys.py 2 first
2.假設exit.py腳本文件內容如下:
1 #!/usr/bin/env python 2 3 import sys 4 5 def exitfunc(value): 6 print(value) 7 sys.exit(0) 8 9 print("hello1") 10 11 try: 12 sys.exit(1) 13 except SystemExit,value: 14 exitfunc(value) 15 16 print("hello2")
命令行執行:python exit.py,則輸出:
1 hello1 2 1
3.sys.path演示:
1 import sys 2 3 sys.path 4 5 # 輸出結果: 6 # ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', 7 # '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', 8 # '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', 9 # '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
4.sys.modules演示:
1 #!/usr/bin/env python 2 3 import sys 4 5 print(sys.modules.keys()) 6 print(sys.modules.values())
7
8 print(sys.modules["os"]) # 輸出 os 模塊的路徑
5.sys.stdout標準輸出演示:
1 import time 2 3 for i in range(50): 4 sys.stdout.write("*") # 列印*號,輸出 *1 ;類似於print ,但print輸出則為 *,這是區別 5 time.sleep(0.1) 6 sys.stdout.flush() # 刷新,顯示到屏幕上 7