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]: ''

2回目の呼び出しで空が返されたのはなぜですか

また、 printが filedescriptor としてfd返される場合、番号3の意味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 に答える