我试试这个
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 是什么意思
我试试这个
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 是什么意思
因为此时文件指针位于文件末尾(由于第一次读取拉出所有数据)。看起来您需要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)
当您进行第一次读取调用时,文件指针向前移动了 24 个字节(或字符),因此您可能到达了文件的末尾。
而 3 只是一个描述符,它对操作系统以外的任何东西没有任何意义。它是 3 的原因是因为默认情况下已经采用描述符 0、1 和 2 (0 = stdin, 1 = stdout, 2 = stderr)