私はこれを試します
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]: ''
2回目の呼び出しで空が返されたのはなぜですか
また、 printが filedescriptor としてfd
返される場合、番号3の意味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]: ''
2回目の呼び出しで空が返されたのはなぜですか
また、 printが filedescriptor としてfd
返される場合、番号3の意味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)