1. 程式人生 > >python 將文件描述符包裝成文件對象

python 將文件描述符包裝成文件對象

pre 函數傳遞 false world write turn 使用 creat python

有一個對應於操作系統上一個已打開的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 將文件描述符包裝成文件對象