文章来自《Python cookbook》.

翻译仅仅是为了个人学习,其它商业版权纠纷与此无关!

-- 61.182.251.99 [2004-09-24 22:52:50]

1. 描述

随机读写文件

Credit: Luther Blissett

1.1. 问题 Problem

从由固定长度的记录组成的文件中读取某处的一条2进制记录,而无需顺序读取一条条记录。

1.2. 解决 Solution

文件中一条记录相对于文件头的字节位移是记录块大小与记录索引(从0开始)的乘积。可以这样,使用seek,然后读取:

   1 thefile = open('somebinfile', 'rb')
   2 thefile.seek(record_size * record_number)
   3 buffer = thefile.read(record_size)

1.3. 讨论 Discussion

此方法仅适用于如下文件:文件(一般是2进制文件)包含的记录具有一致、固定大小, 而对于处理普通文本文件并不适和。为清晰起见,脚本中使用了rb作为open的第2个参数,以2进制打开文件,以备读取。当然,并不需要在第一次seek前打开文件,只要文件以2进制打开,可以在文件最后被关闭前多次使用seek和read.

1.4. 参考 See Also

Python库参考file对象部分;

Perl Cookbook Recipe 8.12