最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python標(biāo)準(zhǔn)庫之Sys模塊使用詳解

 更新時(shí)間:2015年05月23日 09:58:30   投稿:junjie  
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫之Sys模塊使用詳解,本文講解了使用sys模塊獲得腳本的參數(shù)、處理模塊、使用sys模塊操作模塊搜索路徑、使用sys模塊查找內(nèi)建模塊、使用sys模塊查找已導(dǎo)入的模塊等使用案例,需要的朋友可以參考下

sys 模塊提供了許多函數(shù)和變量來處理 Python 運(yùn)行時(shí)環(huán)境的不同部分.

處理命令行參數(shù)

在解釋器啟動(dòng)后, argv 列表包含了傳遞給腳本的所有參數(shù), 列表的第一個(gè)元素為腳本自身的名稱.

使用sys模塊獲得腳本的參數(shù)

復(fù)制代碼 代碼如下:

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


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

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

處理模塊

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

啟動(dòng) Python 時(shí),這個(gè)列表從根據(jù)內(nèi)建規(guī)則, PYTHONPATH 環(huán)境變量的內(nèi)容, 以及注冊(cè)表( Windows 系統(tǒng))等進(jìn)行初始化.

由于它只是一個(gè)普通的列表, 你可以在程序中對(duì)它進(jìn)行操作,

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

復(fù)制代碼 代碼如下:

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)建模塊的名稱

復(fù)制代碼 代碼如下:

def dump(module):
    print module, "=>",
    if module in sys.builtin_module_names:  #查找內(nèi)建模塊是否存在
        print "<BUILTIN>"
    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 => <BUILTIN>
string => C:\python\lib\string.pyc
strop => <BUILTIN>
zlib => C:\python\zlib.pyd

使用sys模塊查找已導(dǎo)入的模塊

modules 字典包含所有加載的模塊. import 語句在從磁盤導(dǎo)入內(nèi)容之前會(huì)先檢查這個(gè)字典.

Python 在處理你的腳本之前就已經(jīng)導(dǎo)入了很多模塊.

復(fù)制代碼 代碼如下:

print sys.modules.keys()


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

使用sys模塊獲得當(dāng)前平臺(tái)

sys.platform  返回當(dāng)前平臺(tái) 出現(xiàn)如: "win32" "linux2" 等

處理標(biāo)準(zhǔn)輸出/輸入

標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)錯(cuò)誤 (通??s寫為 stdout 和 stderr) 是內(nèi)建在每一個(gè) UNIX 系統(tǒng)中的管道。

當(dāng)你 print 某些東西時(shí),結(jié)果前往 stdout 管道;

當(dāng)你的程序崩潰并打印出調(diào)試信息 (例如 Python 中的 traceback (錯(cuò)誤跟蹤)) 的時(shí)候,信息前往 stderr 管道

復(fù)制代碼 代碼如下:

>>> 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 是一個(gè)類文件對(duì)象;調(diào)用它的 write 函數(shù)可以打印出你給定的任何字符串。

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

在最簡(jiǎn)單的例子中,stdout 和 stderr 把它們的輸出發(fā)送到相同的地方

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

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

它們都沒有 read 方法,只有 write 方法。然而,它們?nèi)匀皇穷愇募?duì)象,因此你可以將其它任何 (類) 文件對(duì)象賦值給它們來重定向其輸出。

使用sys重定向輸出

復(fù)制代碼 代碼如下:

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

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

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

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

重定向錯(cuò)誤信息

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

還要注意你既沒有顯式關(guān)閉日志文件,也沒有將 stderr 設(shè)回最初的值。

這樣挺好,因?yàn)橐坏┏绦虮罎?(由于引發(fā)的異常),Python 將替我們清理并關(guān)閉文件

打印到 stderr

向標(biāo)準(zhǔn)錯(cuò)誤寫入錯(cuò)誤信息是很常見的,所以有一種較快的語法可以立刻導(dǎo)出信息

復(fù)制代碼 代碼如下:

>>> print 'entering function'
entering function
>>> import sys
>>> print >> sys.stderr, 'entering function'

entering function


print 語句的快捷語法可以用于寫入任何打開的文件 (或者是類文件對(duì)象)。

在這里,你可以將單個(gè)print語句重定向到stderr而且不用影響后面的print語句。

使用sys模塊退出程序

復(fù)制代碼 代碼如下:

import sys
sys.exit(1)

注意 sys.exit 并不是立即退出. 而是引發(fā)一個(gè) SystemExit 異常. 這意味著你可以在主程序中捕獲對(duì) sys.exit 的調(diào)用

捕獲sys.exit調(diào)用

復(fù)制代碼 代碼如下:

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


hello
there

如果準(zhǔn)備在退出前自己清理一些東西(比如刪除臨時(shí)文件), 你可以配置一個(gè) "退出處理函數(shù)"(exit handler), 它將在程序退出的時(shí)候自動(dòng)被調(diào)用

另一種捕獲sys.exit調(diào)用的方法

復(fù)制代碼 代碼如下:

def exitfunc():
    print "world"

sys.exitfunc = exitfunc  # 設(shè)置捕獲時(shí)調(diào)用的函數(shù)

print "hello"
sys.exit(1)     # 退出自動(dòng)調(diào)用exitfunc()后,程序依然退出了
print "there"  # 不會(huì)被 print

hello
world

相關(guān)文章

  • 利用Python實(shí)現(xiàn)熱力圖的繪制

    利用Python實(shí)現(xiàn)熱力圖的繪制

    熱力圖,是一種通過對(duì)色塊著色來顯示數(shù)據(jù)的統(tǒng)計(jì)圖表。繪圖時(shí),需指定顏色映射的規(guī)則。本文主要用Python來實(shí)現(xiàn)熱力圖的制作,需要的可以參考一下
    2022-09-09
  • 使用python 打開文件并做匹配處理的實(shí)例

    使用python 打開文件并做匹配處理的實(shí)例

    今天小編就為大家分享一篇使用python 打開文件并做匹配處理的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python Requests庫及用法詳解

    Python Requests庫及用法詳解

    Requests庫作為Python中最受歡迎的HTTP庫之一,為開發(fā)人員提供了簡(jiǎn)單而強(qiáng)大的方式來發(fā)送HTTP請(qǐng)求和處理響應(yīng),本文將帶領(lǐng)您深入探索Python Requests庫的世界,我們將從基礎(chǔ)知識(shí)開始,逐步深入,覆蓋各種高級(jí)用法和技巧,感興趣的朋友一起看看吧
    2024-06-06
  • 解決pytorch多GPU訓(xùn)練保存的模型,在單GPU環(huán)境下加載出錯(cuò)問題

    解決pytorch多GPU訓(xùn)練保存的模型,在單GPU環(huán)境下加載出錯(cuò)問題

    這篇文章主要介紹了解決pytorch多GPU訓(xùn)練保存的模型,在單GPU環(huán)境下加載出錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 手把手教你如何用Pycharm2020.1.1配置遠(yuǎn)程連接的詳細(xì)步驟

    手把手教你如何用Pycharm2020.1.1配置遠(yuǎn)程連接的詳細(xì)步驟

    這篇文章主要介紹了如何用Pycharm2020.1.1配置遠(yuǎn)程連接,分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-08-08
  • Django中的模型類設(shè)計(jì)及展示示例詳解

    Django中的模型類設(shè)計(jì)及展示示例詳解

    這篇文章主要介紹了Django中的模型類設(shè)計(jì)及展示,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python-pyinstaller、打包后獲取路徑的實(shí)例

    python-pyinstaller、打包后獲取路徑的實(shí)例

    今天小編就為大家分享一篇python-pyinstaller、打包后獲取路徑的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 使用python生成大量數(shù)據(jù)寫入es數(shù)據(jù)庫并查詢操作(2)

    使用python生成大量數(shù)據(jù)寫入es數(shù)據(jù)庫并查詢操作(2)

    這篇文章主要介紹了使用python生成大量數(shù)據(jù)寫入es數(shù)據(jù)庫并查詢操作,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • PyQt5 文本輸入框自動(dòng)補(bǔ)全QLineEdit的實(shí)現(xiàn)示例

    PyQt5 文本輸入框自動(dòng)補(bǔ)全QLineEdit的實(shí)現(xiàn)示例

    這篇文章主要介紹了PyQt5 文本輸入框自動(dòng)補(bǔ)全QLineEdit的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • python一招完美搞定Chromedriver的自動(dòng)更新問題

    python一招完美搞定Chromedriver的自動(dòng)更新問題

    這篇文章主要介紹了python一招完美搞定Chromedriver的自動(dòng)更新,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09

最新評(píng)論

天气| 灵石县| 高要市| 德兴市| 中西区| 东辽县| 云龙县| 义乌市| 宜君县| 即墨市| 木兰县| 广宗县| 乡宁县| 上饶市| 南丹县| 岗巴县| 濮阳县| 泗阳县| 太仆寺旗| 库伦旗| 阿坝县| 邯郸市| 广东省| 永定县| 蒙自县| 开化县| 榆中县| 蓝山县| 许昌县| 保康县| 裕民县| 汉中市| 墨脱县| 新河县| 沁阳市| 屯门区| 宜兴市| 克什克腾旗| 龙里县| 彝良县| 留坝县|