跳转到主要内容

支持在文件对象行上执行列表操作

项目描述

支持在文件对象行上执行列表操作。

所有操作都避免迭代,除非必要。包括len()和负索引在内的操作会强制整个文件迭代。为了避免过多的查找,所有列表操作都可能改变底层文件对象的位

从一个文件对象开始。

>>> import cStringIO
>>> file_ = cStringIO.StringIO("""\
... foo
... bar
... baz
... qux
... """)

将文件对象包装在listfile实例中。

>>> from rpatterson import listfile
>>> wrapped = listfile.ListFile(file_)

可以通过索引访问行。

>>> wrapped[0]
'foo\n'
>>> wrapped[2]
'baz\n'

支持负索引。

>>> wrapped[-1]
'qux\n'
>>> wrapped[-3]
'bar\n'

长度返回行数。

>>> len(wrapped)
4

超出文件末尾的索引将引发IndexError。

>>> wrapped[4]
Traceback (most recent call last):
IndexError: list index out of range

检索切片返回一个新的同一文件对象的包装器。

>>> slice_ = wrapped[1:3]
>>> len(slice_)
2
>>> slice_[0]
'bar\n'
>>> slice_[1]
'baz\n'
>>> slice_ = wrapped[1:][0:2]
>>> len(slice_)
2
>>> slice_[0]
'bar\n'
>>> slice_[1]
'baz\n'

支持切片步进。

>>> slice_ = wrapped[1::2]
>>> len(slice_)
2
>>> slice_[0]
'bar\n'
>>> slice_[1]
'qux\n'

包装器也是适合writelines()的迭代器。

>>> list(slice_)
['bar\n', 'qux\n']
>>> out = cStringIO.StringIO()
>>> out.writelines(slice_)
>>> out.getvalue()
'bar\nqux\n'

变更日志

0.1 - 2009-05-27

  • 首次发布

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分布

rpatterson.listfile-0.1.tar.gz (4.4 kB 查看哈希值)

上传时间:

由以下支持