python 將檔案描述符包裝成檔案物件

2022-03-15 15:17:25 字數 759 閱讀 4046

有乙個對應於作業系統上乙個已開啟的i/o 通道(比如檔案、管道、套接字等)的整型檔案描述符,你想將它包裝成乙個更高層的python 檔案物件。

乙個檔案描述符和乙個開啟的普通檔案是不一樣的。檔案描述符僅僅是乙個由作業系統指定的整數,用來指代某個系統的i/o 通道。如果你碰巧有這麼乙個檔案描述符,你可以通過使用open() 函式來將其包裝為乙個python 的檔案物件。僅僅只需要使用這個整數值的檔案描述符作為第乙個引數來代替檔名即可

import os

fd = os.open('somefile.txt', os.o_wronly j os.o_creat)

# turn into a proper file

f = open(fd, 'wt')

f.write('hello world\n')

f.close()

當高層的檔案物件被關閉或者破壞的時候,底層的檔案描述符也會被關閉。如果這個並不是你想要的結果,你可以給open() 函式傳遞乙個可選的colsefd=false

f = open(fd, 'wt', closefd=false)

儘管可以將乙個已存在的檔案描述符包裝成乙個正常的檔案物件,但是要注意的是並不是所有的檔案模式都被支援,並且某些型別的檔案描述符可能會有***(特別是涉及到錯誤處理、檔案結尾條件等等的時候)。在不同的作業系統上這種行為也是不一

樣,特別的,上面的例子都不能在非unix 系統上執行。說了這麼多,意思就是要充分測試自己的實現**,確保它能按照期望工作。

Python 將檔案描述符包裝成檔案物件

你有乙個對應於作業系統上乙個已開啟的i o通道 比如檔案 管道 套接字等 的整型檔案描述符,你想將它包裝成乙個更高層的python檔案物件。乙個檔案描述符和乙個開啟的普通檔案是不一樣的。檔案描述符僅僅是乙個由作業系統指定的整數,用來指代某個系統的i o通道。如果你碰巧有這麼乙個檔案描述符,你可以通過...

mysql 檔案描述符 檔案描述符

toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...

檔案描述符

檔案描述符 是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。檔案描述符的優點 相容posix標準,許多 linux 和unix 系統呼叫都依賴於它。檔案描述符的缺點 不能移植到unix以外的系統上去,也不直觀。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案...