有一个对应于操作系统上一个已打开的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 系统上运行。说了这么多,意思就是要充分测试自己的实现代码,确保它能按照期望工作。

最新文章

  1. Android Couldn't load BaiduMapSDK
  2. 利用 spring bean 的属性 init-method 解决因为数据库连接没有初始化而导致首次点击页面超慢的问题
  3. bzoj3110
  4. DropDownList 绑定DataTable并给默认值
  5. POJ 2253 Frogger(floyd)
  6. WordPress非插件添加文章浏览次数统计功能
  7. Oracle10g/11g 在SUSE/RHEL上的安装与配置
  8. JavaScript---网络编程(10)--DHTML技术演示(3)-多选框
  9. HDU 1010 Tempter of the Bone DFS(奇偶剪枝优化)
  10. solr多集合配置
  11. java 异步线程下的顺序控制
  12. CAS部署在Windows上
  13. Properties类学习笔记
  14. LabelImg 图像图像标注工具
  15. Winform设置托盘程序,托盘显示
  16. SAP BI vs. Oracle BI
  17. css 超详细文档
  18. 数学 - SGU 118. Digital Root
  19. Java温故而知新(5)设计模式详解(23种)
  20. 如何实现1080P延迟低于500ms的实时超清直播传输技术<转>

热门文章

  1. CF720A Closing ceremony 贪心
  2. 配置svn用户及权限
  3. 前端 HTML body标签相关内容 常用标签 分割线 <hr>
  4. Mysql安装方法介绍
  5. 切换py环境【转载】
  6. DLNg序列模型第一周
  7. jenkins 的一个BUG
  8. 2019.03.18 连接my sql
  9. [LeetCode] 872. Leaf-Similar Trees_Easy tag: DFS
  10. [LeetCode] 1. Two Sum_Easy