0

我试试这个

fd = os.open("myfd.txt",os.O_RDWR)


In [28]: os.read(fd,24)
Out[28]: 'my test is good\n'

In [29]: os.read(fd,24)
Out[29]: ''

为什么在第二次通话中它返回空

当 printfd它返回3为 filedescriptor 时,数字 3 是什么意思

4

2 回答 2

1

因为此时文件指针位于文件末尾(由于第一次读取拉出所有数据)。看起来您需要os.lseek重置文件指针:

print os.read(fd,24)
os.lseek(fd,0,0)
print os.read(fd,24)

请注意,如果您能提供帮助,普通文件对象通常更容易使用:

with open('filename') as fin:
    print fin.read(24)
    fin.seek(0)
    print fin.read(24)
于 2013-02-24T01:49:57.780 回答
0

当您进行第一次读取调用时,文件指针向前移动了 24 个字节(或字符),因此您可能到达了文件的末尾。

而 3 只是一个描述符,它对操作系统以外的任何东西没有任何意义。它是 3 的原因是因为默认情况下已经采用描述符 0、1 和 2 (0 = stdin, 1 = stdout, 2 = stderr)

于 2013-02-24T01:52:08.763 回答