創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
為廣陽等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及廣陽網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站制作、網(wǎng)站建設、廣陽網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!本篇文章給大家分享的是有關Python的sys模塊有哪些功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
sys 模塊提供了許多函數(shù)和變量來處理 Python 運行時環(huán)境的不同部分。
處理命令行參數(shù)
在解釋器啟動后, argv 列表包含了傳遞給腳本的所有參數(shù), 列表的第一個元素為腳本自身的名稱.
使用sys模塊獲得腳本的參數(shù)
代碼如下:
print "script name is", sys.argv[0] # 使用sys.argv[0]采集腳本名稱 if len(sys.argv) > 1: print "there are", len(sys.argv)-1, "arguments:" # 使用len(sys.argv)-1采集參數(shù)個數(shù)-1為減去[0]腳本名稱 for arg in sys.argv[1:]: #輸出除了[0]外所有參數(shù) print arg else: print "there are no arguments!"
如果是從標準輸入讀入腳本 (比如 "python < sys-argv-example-1.py"), 腳本的名稱將被設置為空串.
如果把腳本作為字符串傳遞給python (使用 -c 選項), 腳本名會被設置為 "-c".
處理模塊
path 列表是一個由目錄名構成的列表, Python 從中查找擴展模塊( Python 源模塊, 編譯模塊,或者二進制擴展).
啟動 Python 時,這個列表從根據(jù)內(nèi)建規(guī)則, PYTHONPATH 環(huán)境變量的內(nèi)容, 以及注冊表( Windows 系統(tǒng))等進行初始化.
由于它只是一個普通的列表, 你可以在程序中對它進行操作,
使用sys模塊操作模塊搜索路徑
代碼如下:
print "path has", len(sys.path), "members" sys.path.insert(0, "samples") #將路徑插入到path,[0]中 import sample sys.path = [] #刪除path中所有路徑 import random
使用sys模塊查找內(nèi)建模塊
builtin_module_names 列表包含 Python 解釋器中所有內(nèi)建模塊的名稱
代碼如下:
def dump(module): print module, "=>", if module in sys.builtin_module_names: #查找內(nèi)建模塊是否存在 print "" else: module = _ _import_ _(module) #非內(nèi)建模塊輸出模塊路徑 print module._ _file_ _ dump("os") dump("sys") dump("string") dump("strop") dump("zlib") os => C:\python\lib\os.pyc sys => string => C:\python\lib\string.pyc strop => zlib => C:\python\zlib.pyd
使用sys模塊查找已導入的模塊
modules 字典包含所有加載的模塊. import 語句在從磁盤導入內(nèi)容之前會先檢查這個字典.
Python 在處理你的腳本之前就已經(jīng)導入了很多模塊.
代碼如下:
print sys.modules.keys() ['os.path', 'os', 'exceptions', '_ _main_ _', 'ntpath', 'strop', 'nt', 'sys', '_ _builtin_ _', 'site', 'signal', 'UserDict', 'string', 'stat']
使用sys模塊獲得當前平臺
sys.platform 返回當前平臺 出現(xiàn)如: "win32" "linux2" 等
處理標準輸出/輸入
標準輸入和標準錯誤 (通??s寫為 stdout 和 stderr) 是內(nèi)建在每一個 UNIX 系統(tǒng)中的管道。
當你 print 某些東西時,結果前往 stdout 管道;
當你的程序崩潰并打印出調(diào)試信息 (例如 Python 中的 traceback (錯誤跟蹤)) 的時候,信息前往 stderr 管道
代碼如下:
>>> for i in range(3): ... print'Dive in' Dive in Dive in Dive in >>> import sys >>> for i in range(3): ... sys.stdout.write('Dive in') Dive inDive inDive in >>> for i in range(3): ... sys.stderr.write('Dive in') Dive inDive inDive in
stdout 是一個類文件對象;調(diào)用它的 write 函數(shù)可以打印出你給定的任何字符串。
實際上,這就是 print 函數(shù)真正做的事情;它在你打印的字符串后面加上一個硬回車,然后調(diào)用 sys.stdout.write 函數(shù)。
在最簡單的例子中,stdout 和 stderr 把它們的輸出發(fā)送到相同的地方
和 stdout 一樣,stderr 并不為你添加硬回車;如果需要,要自己加上。
stdout 和 stderr 都是類文件對象,但是它們都是只寫的。
它們都沒有 read 方法,只有 write 方法。然而,它們?nèi)匀皇穷愇募ο?,因此你可以將其它任?(類) 文件對象賦值給它們來重定向其輸出。
使用sys重定向輸出
代碼如下:
print 'Dive in' # 標準輸出 saveout = sys.stdout # 終在重定向前保存stdout,這樣的話之后你還可以將其設回正常 fsock = open('out.log', 'w') # 打開一個新文件用于寫入。如果文件不存在,將會被創(chuàng)建。如果文件存在,將被覆蓋。 sys.stdout = fsock # 所有后續(xù)的輸出都會被重定向到剛才打開的新文件上。 print 'This message will be logged instead of displayed' # 這樣只會將輸出結果“打印”到日志文件中;屏幕上不會看到輸出 sys.stdout = saveout # 在我們將 stdout 搞亂之前,讓我們把它設回原來的方式。 fsock.close() # 關閉日志文件。
重定向錯誤信息
fsock = open('error.log', 'w') # 打開你要存儲調(diào)試信息的日志文件。 sys.stderr = fsock # 將新打開的日志文件的文件對象賦值給stderr以重定向標準錯誤。 raise Exception, 'this error will be logged' # 引發(fā)一個異常,沒有在屏幕上打印出任何東西,所有正常的跟蹤信息已經(jīng)寫進error.log
還要注意你既沒有顯式關閉日志文件,也沒有將 stderr 設回最初的值。
這樣挺好,因為一旦程序崩潰 (由于引發(fā)的異常),Python 將替我們清理并關閉文件
打印到 stderr
向標準錯誤寫入錯誤信息是很常見的,所以有一種較快的語法可以立刻導出信息
代碼如下:
>>> print 'entering function' entering function >>> import sys >>> print >> sys.stderr, 'entering function' entering function
print 語句的快捷語法可以用于寫入任何打開的文件 (或者是類文件對象)。
在這里,你可以將單個print語句重定向到stderr而且不用影響后面的print語句。
使用sys模塊退出程序
代碼如下:
import sys sys.exit(1)
注意 sys.exit 并不是立即退出. 而是引發(fā)一個 SystemExit 異常. 這意味著你可以在主程序中捕獲對 sys.exit 的調(diào)用
捕獲sys.exit調(diào)用
代碼如下:
import sys print "hello" try: sys.exit(1) except SystemExit: # 捕獲退出的異常 pass # 捕獲后不做任何操作 print "there" hello there
如果準備在退出前自己清理一些東西(比如刪除臨時文件), 你可以配置一個 "退出處理函數(shù)"(exit handler), 它將在程序退出的時候自動被調(diào)用
另一種捕獲sys.exit調(diào)用的方法
代碼如下:
def exitfunc(): print "world" sys.exitfunc = exitfunc # 設置捕獲時調(diào)用的函數(shù) print "hello" sys.exit(1) # 退出自動調(diào)用exitfunc()后,程序依然退出了 print "there" # 不會被 print hello world
以上就是Python的sys模塊有哪些功能,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道。
網(wǎng)站欄目:Python的sys模塊有哪些功能-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://aaarwkj.com/article4/pjhie.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、手機網(wǎng)站建設、App設計、小程序開發(fā)、Google、品牌網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容