##language:zh ''' 文章来自《Python cookbook》. 翻译仅仅是为了个人学习,其它商业版权纠纷与此无关! ''' -- 61.182.251.99 [<<DateTime(2004-09-24T22:52:50Z)>>] <<TableOfContents>> = 描述 = 随机读写文件 Credit: Luther Blissett == 问题 Problem == 从由固定长度的记录组成的文件中读取某处的一条2进制记录,而无需顺序读取一条条记录。 == 解决 Solution == 文件中一条记录相对于文件头的字节位移是记录块大小与记录索引(从0开始)的乘积。可以这样,使用'''seek''',然后读取: {{{ #!python thefile = open('somebinfile', 'rb') thefile.seek(record_size * record_number) buffer = thefile.read(record_size) }}} == 讨论 Discussion == 此方法仅适用于如下文件:文件(一般是2进制文件)包含的记录具有一致、固定大小, 而对于处理普通文本文件并不适和。为清晰起见,脚本中使用了'''rb'''作为open的第2个参数,以2进制打开文件,以备读取。当然,并不需要在第一次seek前打开文件,只要文件以2进制打开,可以在文件最后被关闭前多次使用seek和read. == 参考 See Also == Python库参考file对象部分; Perl Cookbook Recipe 8.12