os sys signal模塊

python的os模塊提供一些系統api,sys模塊主要針對解釋器的設置,運行是的動態信息。

下面記錄幾個有用的方法。

1、當我們打開一個文件的時候,有隻讀方式,寫方式,讀寫方式,等等,如果我們是以只讀方式打開的,那麼在寫入文件的時候肯定得出錯,怎麼把這個容錯機制實現,一般的方法,可以使用異常捕捉IOError。這裏介紹一個更友好的方式,os.access(path, mode)

1、os.W_OK 可寫

2、os.R_OK  可讀

3、os.F_OK  路徑存在

4、os.X_OK 可執行

<span style="font-size:18px;">#利用異常方式</span>
<span style="font-size:18px;">try:
    fp = open("myfile")
except IOError as e:
    if e.errno == errno.EACCES:
        return "some default data"
    # Not a permission error.
    raise
else:
    with fp:
        return fp.read()</span>
<span style="font-size:18px;">#利用os的api</span>
<span style="font-size:18px;">if os.access("myfile", os.R_OK):
    with open("myfile") as fp:
        return fp.read()
return "some default data"</span>

這樣代碼量就小了很多,可讀性也強了.

2、

os.chdir(path) 進入某個路徑下,

os.remove(path) 刪除某個path

os.getcwd()  得到當前路徑

.......

3、sys.exit()退出程序

4、有時候我們需要捕捉鍵盤的ctrl+c,有兩種思路.

1、一種是利用異常,KeyboardError.

2、利用signal模塊的信號量.

5、我們的文件對象已經是實現了上下文協議的,也就是:

<span style="font-size:18px;">with open("eggs", "w+") as eggs:
    ....</span>

這樣有一個好處,就是不用管文件有沒有關閉,就算在with下面出現了異常,那麼在退出with上下文的時候, 會自動的幫你清理資源, 比如在這裏是關閉文件.

要實現上下文協議, 就要重寫 __exit__()和__enter__方法, 換一句話就是實現了這兩個方法的對象,就能夠用在with的上下文環境中了.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章