Python sys模塊怎么使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司是專業(yè)的臨沭網(wǎng)站建設(shè)公司,臨沭接單;提供網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行臨沭網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
sys 模塊代表了 Python 解釋器,主要用于獲取和 Python 解釋器相關(guān)的信息。
在 Python 的交互式解釋器中先導(dǎo)入 sys 模塊,然后輸入 [e for e in dir(sys) if not e.startswith('_')] 命令(sys 模塊沒有 __all__ 變量),可以看到如下輸出結(jié)果:
>>> [e for e in dir(sys) if not e.startswith('_')] ['api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_wrapper', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'last_traceback', 'last_type', 'last_value', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'set_asyncgen_hooks', 'set_coroutine_wrapper', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions', 'winver']
上面列出的程序單元就是 sys 模塊所包含的全部程序單元(包括變量、函數(shù)等),讀者不要被它們嚇著了,以為這些全都需要記下來。實際上完全沒有必要,通常都是用到哪些模塊就去查閱其對應(yīng)的說明文檔和參考手冊。
>>> [e for e in dir(sys) if not e.startswith('_')]
['api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_wrapper', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'last_traceback', 'last_type', 'last_value', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'set_asyncgen_hooks', 'set_coroutine_wrapper', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions', 'winver']需要說明的是,大部分時候用不到 sys 模塊里很冷僻的功能,因此本節(jié)只介紹 sys 模塊中常用的屬性和函數(shù):
sys.argv:獲取運行 Python 程序的命令行參數(shù)。其中 sys.argv[0] 通常就是指該 Python 程序,sys.argv[1] 代表為 Python 程序提供的第一個參數(shù),sys.argv[2] 代表為 Python 程序提供的第二個參數(shù)……依此類推。
sys.byteorder:顯示本地字節(jié)序的指示符。如果本地字節(jié)序是大端模式,則該屬性返回 big;否則返回 little。
sys.copyright:該屬性返回與 Python 解釋器有關(guān)的版權(quán)信息。
sys.executable:該屬性返回 Python 解釋器在磁盤上的存儲路徑。
sys.exit():通過引發(fā) SystemExit 異常來退出程序。將其放在 try 塊中不能阻止 finally 塊的執(zhí)行。
sys.flags:該只讀屬性返回運行 Python 命令時指定的旗標。
sys.getfilesystemencoding():返回在當(dāng)前系統(tǒng)中保存文件所用的字符集。
sys.getrefcount(object):返回指定對象的引用計數(shù)。前面介紹過,當(dāng) object 對象的引用計數(shù)為 0 時,系統(tǒng)會回收該對象。
sys.getrecursionlimit():返回 Python 解釋器當(dāng)前支持的遞歸深度。該屬性可通過 setrecursionlimit() 方法重新設(shè)置。
sys.getswitchinterval():返回在當(dāng)前 Python 解釋器中線程切換的時間間隔。該屬性可通過 setswitchinterval() 函數(shù)改變。
sys.implementation:返回當(dāng)前 Python 解釋器的實現(xiàn)。
sys.maxsize:返回 Python 整數(shù)支持的最大值。在 32 位平臺上,該屬性值為 2**31-1;在 64 位平臺上,該屬性值為 2**63-1。
sys.modules:返回模塊名和載入模塊對應(yīng)關(guān)系的字典。
sys.path:該屬性指定 Python 查找模塊的路徑列表。程序可通過修改該屬性來動態(tài)增加 Python 加載模塊的路徑。
sys.platform:返回 Python 解釋器所在平臺的標識符。
sys.stdin:返回系統(tǒng)的標準輸入流——一個類文件對象。
sys.stdout:返回系統(tǒng)的標準輸出流——一個類文件對象。
sys.stderr:返回系統(tǒng)的錯誤輸出流——一個類文件對象。
sys.version:返回當(dāng)前 Python 解釋器的版本信息。
sys.winver:返回當(dāng)前 Python 解釋器的主版本號。
下面程序示范了使用 sys 模塊的部分功能:
import sys # 顯示本地字節(jié)序的指示符。 print(sys.byteorder) # 顯示Python解釋器有關(guān)的版權(quán)信息 print(sys.copyright) # 顯示Python解釋器在磁盤上的存儲路徑。 print(sys.executable) # 顯示當(dāng)前系統(tǒng)上保存文件所用的字符集。 print(sys.getfilesystemencoding()) # 顯示Python整數(shù)支持的最大值 print(sys.maxsize) # 顯示Python解釋器所在平臺 print(sys.platform) # 顯示當(dāng)前Python解釋器的版本信息。 print(sys.version) # 返回當(dāng)前Python解釋器的主版本號。 print(sys.winver)
上面程序分別調(diào)用了 sys 模塊的部分屬性和函數(shù)。運行該程序,可以看到如下輸出結(jié)果:
little Copyright (c) 2001-2017 Python Software Foundation. All Rights Reserved. Copyright (c) 2000 BeOpen.com. All Rights Reserved. Copyright (c) 1995-2001 Corporation for National Research Initiatives. All Rights Reserved. Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. All Rights Reserved. D:\python3.6\pythonw.exe utf-8 9223372036854775807 win32 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] 3.6
從上面的輸出結(jié)果可以看出,Windows 7 系統(tǒng)(作者使用的)的字節(jié)序是小端模式,將 Python 解釋器保存在 D:\python3.6\pythonw.exe 處,當(dāng)前 Python 版本是 3.6.2。
獲取運行參數(shù)
通過 sys 模塊的 argv 屬性可獲取運行 Python 程序的命令行參數(shù)。argv 屬性值是一個列表,其列表元素和運行參數(shù)的關(guān)系如圖 所示
因此,如果需要獲取運行 Python 程序時傳入的參數(shù),可以通過 argv[1]、argv[2]……來獲取。例如下面程序(編寫在 argv_test.py 文件中):
from sys import argv # 輸出argv列表的長度 print(len(argv)) # 遍歷argv列表的每個元素 for arg in argv: print(arg)
上面程序是最簡單的“Hello World”級的程序,只是這個程序增加了輸出 argv 列表的長度、遍歷 argv 列表元素的代碼。使用“python argv_test.py” 命令運行上面程序,可以看到如下輸出結(jié)果:
1 argv_test.py
此時看到 argv 列表的長度為 1,argv 的第一個元素就是被運行的 Python 程序。
如果改為使用如下命令來運行該程序:
python argv_test.py Python Swift
可以看到如下輸出結(jié)果:
3 argv_test.py Python Swift
動態(tài)修改模塊加載路徑
前面介紹了使用 PYTHONPATH 環(huán)境變量來添加 Python 模塊的加載路徑,但這種方式必須預(yù)先設(shè)置好。如果需要在程序運行時動態(tài)改變 Python 模塊的加載路徑,則可通過 sys.path 屬性來實現(xiàn)。
sys.path 也是很有用的一個屬性,它可用于在程序運行時為 Python 動態(tài)修改模塊加載路徑。例如,如下程序在運行時動態(tài)指定加載 g:\fk_ext 目錄下的模塊:
import sys # 動態(tài)添加g:\fk_ext路徑作為模塊加載路徑 sys.path.append('g:\\fk_ext') # 加載g:\fk_ext路徑下的hello模塊 import hello
為了成功運行該程序,需要在 G:\ 盤中創(chuàng)建 fk_ext 目錄,并在該目錄下添加 hello.py 模塊文件。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。