开发者社区> 问答> 正文

将文件描述符包装成文件对象

你有一个对应于操作系统上一个已打开的I/O通道(比如文件、管道、套接字等)的整型文件描述符, 你想将它包装成一个更高层的Python文件对象。

展开
收起
哦哦喔 2020-04-17 12:30:13 669 0
1 条回答
写回答
取消 提交回答
  • 一个文件描述符和一个打开的普通文件是不一样的。 文件描述符仅仅是一个由操作系统指定的整数,用来指代某个系统的I/O通道。 如果你碰巧有这么一个文件描述符,你可以通过使用 open() 函数来将其包装为一个Python的文件对象。 你仅仅只需要使用这个整数值的文件描述符作为第一个参数来代替文件名即可。例如:
    
    # Open a low-level file descriptor
    import os
    fd = os.open('somefile.txt', os.O_WRONLY | os.O_CREAT)
    
    # Turn into a proper file
    f = open(fd, 'wt')
    f.write('hello world\n')
    f.close()
    当高层的文件对象被关闭或者破坏的时候,底层的文件描述符也会被关闭。 如果这个并不是你想要的结果,你可以给 open() 函数传递一个可选的 colsefd=False 。比如:
    
    # Create a file object, but don't close underlying fd when done
    f = open(fd, 'wt', closefd=False)
    ...
    
    2020-04-17 12:30:21
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
对象的生命期管理 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载