亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python標準庫之Sys模塊使用詳解

2020-01-04 18:10:37
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python標準庫之Sys模塊使用詳解,本文講解了使用sys模塊獲得腳本的參數、處理模塊、使用sys模塊操作模塊搜索路徑、使用sys模塊查找內建模塊、使用sys模塊查找已導入的模塊等使用案例,需要的朋友可以參考下
 

sys 模塊提供了許多函數和變量來處理 Python 運行時環境的不同部分.

處理命令行參數

在解釋器啟動后, argv 列表包含了傳遞給腳本的所有參數, 列表的第一個元素為腳本自身的名稱.

使用sys模塊獲得腳本的參數

 

復制代碼代碼如下:

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采集參數個數-1為減去[0]腳本名稱
    for arg in sys.argv[1:]:            #輸出除了[0]外所有參數
        print arg
else:
    print "there are no arguments!"


如果是從標準輸入讀入腳本 (比如 "python < sys-argv-example-1.py"), 腳本的名稱將被設置為空串.

 

如果把腳本作為字符串傳遞給python (使用 -c 選項), 腳本名會被設置為 "-c".

處理模塊

path 列表是一個由目錄名構成的列表, Python 從中查找擴展模塊( Python 源模塊, 編譯模塊,或者二進制擴展).

啟動 Python 時,這個列表從根據內建規則, PYTHONPATH 環境變量的內容, 以及注冊表( Windows 系統)等進行初始化.

由于它只是一個普通的列表, 你可以在程序中對它進行操作,

使用sys模塊操作模塊搜索路徑

 

復制代碼代碼如下:

print "path has", len(sys.path), "members"

 

sys.path.insert(0, "samples")  #將路徑插入到path,[0]中
import sample

sys.path = []  #刪除path中所有路徑
import random 

 

使用sys模塊查找內建模塊

builtin_module_names 列表包含 Python 解釋器中所有內建模塊的名稱

 

復制代碼代碼如下:

def dump(module):
    print module, "=>",
    if module in sys.builtin_module_names:  #查找內建模塊是否存在
        print "<BUILTIN>"
    else:
        module = _ _import_ _(module)         #非內建模塊輸出模塊路徑
        print module._ _file_ _

 

dump("os")
dump("sys")
dump("string")
dump("strop")
dump("zlib")

os => C:/python/lib/os.pyc
sys => <BUILTIN>
string => C:/python/lib/string.pyc
strop => <BUILTIN>
zlib => C:/python/zlib.pyd

 

使用sys模塊查找已導入的模塊

modules 字典包含所有加載的模塊. import 語句在從磁盤導入內容之前會先檢查這個字典.

Python 在處理你的腳本之前就已經導入了很多模塊.

 

復制代碼代碼如下:

print sys.modules.keys()

 


['os.path', 'os', 'exceptions', '_ _main_ _', 'ntpath', 'strop', 'nt',
'sys', '_ _builtin_ _', 'site', 'signal', 'UserDict', 'string', 'stat']

 

使用sys模塊獲得當前平臺

sys.platform  返回當前平臺 出現如: "win32" "linux2" 等

處理標準輸出/輸入

標準輸入和標準錯誤 (通??s寫為 stdout 和 stderr) 是內建在每一個 UNIX 系統中的管道。

當你 print 某些東西時,結果前往 stdout 管道;

當你的程序崩潰并打印出調試信息 (例如 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 是一個類文件對象;調用它的 write 函數可以打印出你給定的任何字符串。

實際上,這就是 print 函數真正做的事情;它在你打印的字符串后面加上一個硬回車,然后調用 sys.stdout.write 函數。

在最簡單的例子中,stdout 和 stderr 把它們的輸出發送到相同的地方

和 stdout 一樣,stderr 并不為你添加硬回車;如果需要,要自己加上。

stdout 和 stderr 都是類文件對象,但是它們都是只寫的。

它們都沒有 read 方法,只有 write 方法。然而,它們仍然是類文件對象,因此你可以將其它任何 (類) 文件對象賦值給它們來重定向其輸出。

使用sys重定向輸出

 

復制代碼代碼如下:

print 'Dive in'        # 標準輸出
saveout = sys.stdout        # 終在重定向前保存stdout,這樣的話之后你還可以將其設回正常
fsock = open('out.log', 'w')      # 打開一個新文件用于寫入。如果文件不存在,將會被創建。如果文件存在,將被覆蓋。
sys.stdout = fsock                 # 所有后續的輸出都會被重定向到剛才打開的新文件上。

 

print  'This message will be logged instead of displayed'    # 這樣只會將輸出結果“打印”到日志文件中;屏幕上不會看到輸出

sys.stdout = saveout   # 在我們將 stdout 搞亂之前,讓我們把它設回原來的方式。    

fsock.close()     # 關閉日志文件。

 

重定向錯誤信息

fsock = open('error.log', 'w')           # 打開你要存儲調試信息的日志文件。 
sys.stderr = fsock                           # 將新打開的日志文件的文件對象賦值給stderr以重定向標準錯誤。
raise Exception, 'this error will be logged'   # 引發一個異常,沒有在屏幕上打印出任何東西,所有正常的跟蹤信息已經寫進error.log

還要注意你既沒有顯式關閉日志文件,也沒有將 stderr 設回最初的值。

這樣挺好,因為一旦程序崩潰 (由于引發的異常),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 并不是立即退出. 而是引發一個 SystemExit 異常. 這意味著你可以在主程序中捕獲對 sys.exit 的調用

捕獲sys.exit調用

 

復制代碼代碼如下:

import sys
print "hello"
try:
    sys.exit(1)
except SystemExit:   # 捕獲退出的異常
    pass                    # 捕獲后不做任何操作
print "there"

 


hello
there

 

如果準備在退出前自己清理一些東西(比如刪除臨時文件), 你可以配置一個 "退出處理函數"(exit handler), 它將在程序退出的時候自動被調用

另一種捕獲sys.exit調用的方法

 

復制代碼代碼如下:

def exitfunc():
    print "world"

 

sys.exitfunc = exitfunc  # 設置捕獲時調用的函數

print "hello"
sys.exit(1)     # 退出自動調用exitfunc()后,程序依然退出了
print "there"  # 不會被 print

hello
world


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线视频欧美日韩| 日韩精品视频在线| 日韩av黄色在线观看| 久久的精品视频| 欧美大尺度电影在线观看| 亚洲一级黄色片| 日韩精品久久久久| 欧美性猛xxx| 亚洲天堂第二页| 91精品国产乱码久久久久久久久| 国产成人精品午夜| 日本亚洲欧洲色| 国产在线精品成人一区二区三区| 欧美激情精品久久久久久大尺度| 亚洲欧美另类中文字幕| 久久精品国产清自在天天线| 欧美黄色性视频| 亚洲大胆人体视频| 国产精品第1页| 亚洲电影第1页| 欧美日韩国产123| 性欧美在线看片a免费观看| 俺去亚洲欧洲欧美日韩| 精品国产拍在线观看| www.日本久久久久com.| 亚洲日韩欧美视频一区| 久久精品99久久香蕉国产色戒| 国产精品18久久久久久首页狼| 亚洲精品美女在线观看| 欧美日韩午夜剧场| 久久精品亚洲精品| 中文字幕精品一区久久久久| 国产精品第二页| 欧美理论片在线观看| 91精品啪在线观看麻豆免费| 97精品国产97久久久久久免费| 国产精品视频免费在线观看| 色综合老司机第九色激情| 久久久久999| 亚洲一区二区黄| 国产精品极品美女粉嫩高清在线| 亚洲毛片在线观看| 欧美特黄级在线| 91国内揄拍国内精品对白| 久久精品视频在线| 日韩精品欧美激情| 欧美夫妻性生活视频| 亚洲综合精品伊人久久| 51精品在线观看| 日av在线播放中文不卡| 亚洲va电影大全| 国产欧美韩国高清| 欧美日韩一区二区在线播放| 国产精品久久999| 国产精品久久婷婷六月丁香| 日韩av手机在线| 国产一区二区日韩精品欧美精品| 久久久久久久久爱| 色悠悠国产精品| 精品福利免费观看| 欧美精品免费在线观看| 国产精品xxxxx| 欧美日韩一区二区免费视频| 亚洲国产97在线精品一区| 色偷偷偷综合中文字幕;dd| 91社影院在线观看| 国产欧美日韩亚洲精品| 久久久亚洲影院你懂的| 亚洲欧美激情在线视频| 国产精品www色诱视频| 在线观看日韩av| 91av在线看| 亚洲激情在线观看视频免费| 大胆欧美人体视频| 国产视频亚洲精品| 亚洲国模精品私拍| 欧美性猛交xxxx黑人猛交| 久热精品视频在线观看一区| 亚洲成成品网站| 国产欧美最新羞羞视频在线观看| 91在线高清视频| 欧美成人免费全部观看天天性色| 成人国产在线激情| 国产精品青草久久久久福利99| 欧美大肥婆大肥bbbbb| 91久久精品国产91久久性色| 在线播放日韩精品| 中文字幕国内精品| 成人网在线视频| 夜夜嗨av一区二区三区四区| 国内成人精品一区| 2019亚洲男人天堂| 国产欧美va欧美va香蕉在| 久久99亚洲精品| 最新91在线视频| 欧美日韩高清在线观看| 538国产精品一区二区免费视频| 最新的欧美黄色| 亚洲综合自拍一区| 亚洲欧美综合图区| 2019中文在线观看| 日韩福利伦理影院免费| 欧美日韩国产中字| 成人黄色在线播放| 精品久久久精品| 久久久久免费精品国产| 亚洲精品中文字幕有码专区| 美女国内精品自产拍在线播放| 日韩精品免费视频| 亚洲综合中文字幕在线观看| 国产福利精品视频| 国产精品九九久久久久久久| 色诱女教师一区二区三区| 中文字幕亚洲一区二区三区| 久久亚洲精品中文字幕冲田杏梨| 亚洲精品色婷婷福利天堂| 国产美女精品免费电影| 91免费在线视频| 中日韩午夜理伦电影免费| 成人性生交xxxxx网站| 日韩欧美精品网址| www.日韩系列| 色先锋久久影院av| 日韩美女福利视频| 亚洲jizzjizz日本少妇| 国产成人福利夜色影视| xxxxx91麻豆| 亚洲成人精品视频| 久久精品国产一区二区电影| 欧美色道久久88综合亚洲精品| 隔壁老王国产在线精品| 精品久久久国产精品999| 69av视频在线播放| 中文字幕精品久久久久| 欧美日韩国内自拍| 久久久久久国产精品美女| 国产精品久久77777| 俺去了亚洲欧美日韩| 亚洲va欧美va国产综合久久| 欧美精品激情在线| 国产精品尤物福利片在线观看| 国产成+人+综合+亚洲欧洲| 97视频在线观看亚洲| 亚洲精品一区二区久| 一二美女精品欧洲| 激情久久av一区av二区av三区| 午夜精品理论片| 国产精品av在线播放| 97国产精品久久| 视频一区视频二区国产精品| 日韩精品极品在线观看播放免费视频| 国产精品极品尤物在线观看| 欧美大奶子在线| 久久久精品国产一区二区| 国产成人精品一区二区在线| 91久久精品日日躁夜夜躁国产| 日韩一级黄色av| 亚洲黄色在线看| 亚洲深夜福利网站| 国产成人涩涩涩视频在线观看| 国产在线精品一区免费香蕉| 亚洲第一区在线| 亚洲乱码一区av黑人高潮| 亚洲香蕉伊综合在人在线视看|