我试试这个
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]: ''
为什么在第二次通话中它返回空
当打印fd
时,它返回3
作为filedescriptor,这是3号的含义
答案 0 :(得分: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)
答案 1 :(得分:0)
当您进行第一次读取调用时,文件指针前移了24个字节(或字符),因此您可能会到达文件的末尾。
3只是一个描述符,它对操作系统没有任何意义。它是3的原因是因为默认情况下已经采用了描述符0,1和2(0 = stdin,1 = stdout,2 = stderr)