首頁  >  文章  >  後端開發  >  python裡fd是什麼意思

python裡fd是什麼意思

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼原創
2019-06-21 13:38:4631085瀏覽

檔案描述字(file descriptor,fd)是系統中用來唯一記錄目前已經開啟的檔案的識別號,fd是一個整數。

除了file物件外,Python也提供對fd的操作,對fd的操作更為底層,fd和Python中的file物件是不同的概念。在介紹file物件時已經提過,呼叫 f.fileno() 可以得到一個檔案物件的fd,也可以在一個已有的 fd 上在封裝一個 file 物件:f = os.fdopen(fd)。

python裡fd是什麼意思

有些fd是一個在一個行程建立時事先指派好的:

##0-行程的stdin

#1——進程的stdout

2——進程的stderr

Python中的os模組對於fd提供如下的方法:

1. 關閉fd

os.close(fd)

2. 複製fd

os.dup(fd)

回傳一個新的fd1,這個fd1複製了參數fd。

3. 複製fd

os.dup2(fd, fd2)

將 fd 複製到 fd2,如果 fd2 已經打開,則先關閉它。

4. 從fd 到file 物件

os.fdopen(fd, mode='r', bufsize=-1)

傳回一個封裝了fd的Python file 對象,參數 mode 和 bufsize 和內建的open()函數中的對應參數意義相同。

 

5. 從fd 取得檔案的各種屬性

os.fstat(fd)

傳回一個stat_result 類型的實例x,和os.stat(path)傳回的類型相同,只是這裡是透過一個fd 來獲得對應檔案的相關屬性。

6. 改變fd 對應檔的目前位置

os.lseek(fd, pos, how)  

效果同f.seek(pos, how),參數how 指定了參考點,共三種,分別是:os.SEEK_SET == 0 (檔案起始)、os.SEEK_CUR == 1(目前位置)和os.SEEK_END == 2(檔案結尾).  

沒有類似 f.tell()這種,可以直接使用 fd 來獲得檔案目前位置的函數,實際上使用os.lseek() 就可以自己實作一個,

os.lseek(fd, 0, os.SEEK_CUR)

就可以傳回目前fd 對應檔的位置,且不會對原文件造成影響。 

7. 開啟文件,取得fd

os.open(file, flags, mode=0777

以上是python裡fd是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn