【发布时间】:2012-12-26 03:59:26
【问题描述】:
在 Python 3.2(和其他版本)中,documentation for os.open 声明:
此函数适用于低级 I/O。对于正常使用,使用内置函数 open(),它返回一个带有 read() 和 write() 方法(以及更多)的文件对象。要将文件描述符包装在文件对象中,请使用 fdopen()。
还有for fdopen():
返回一个连接到文件描述符 fd 的打开文件对象。这是 open() 的别名并接受相同的参数。唯一的区别是 fdopen() 的第一个参数必须始终是整数。
This comment 在关于io.open 和os.open 之间区别的问题中(这个区别我完全清楚,我总是使用io.open,从不使用os.open)问: 为什么有人会选择 Python 进行低级 I/O?,但并没有真正得到答案。
我的问题与评论问题非常相似:在 Python 中,通过os.open、os.fdopen、os.close、os.read 等进行低级 I/O 的用例是什么.? 我曾经认为需要对进程进行去魔化,但I'm not so sure anymore。是否有任何任务只能使用低级 I/O 而不能使用高级包装器执行?
【问题讨论】:
-
我的猜测是更高级别的包装器使用这些函数。至少
tempfile模块在 python 2.7.3 上使用了其中的大部分... -
@mgilson 那么我的问题是,为什么 tempfile 不能使用更高级别的?