可靠地从文件中读取n个字节

时间:2015-03-07 17:09:51

标签: python

我有一个python程序需要从某个偏移量的文件中读取N个字节(并写入另一个文件)。目前使用python的低级接口os.read(),而不是文件对象,由于其他原因。该文件已为stat(),因此可以确定存在大量数据。我的问题是,python是否会尽力返回N个字节,或者我需要这样做,因为它是用C编码的,这样的读取需要放在循环中,检查每次读取的返回字节,直到读取N个字节。我希望如果python已经在内部进行,那就应该避免这种情况。

2 个答案:

答案 0 :(得分:1)

os.read()是使用C stdlib直接调用 的低级调用,仅在Python和C类型之间进行转换。例如,请参阅source code for the POSIX version

你必须像对待C一样对待它;你必须像在C代码中一样循环。

答案 1 :(得分:0)

os.read甚至可以对信号进行EINTR(Python 3.2),例如参见this bug entry in the issue database。行为应该修复W.R.T.即将到来的Python 3.5中的EINTR语义。