Skip to main content

A Swiss Army knife iterator for files (or any iterator of strings)

Project description

File Iter

License Code style: ruff GitHub Workflow Status Codecov

A Swiss Army knife iterator for files (or any iterator of strings)

  • Strips lines
  • Keeps track of the current line: current_line
  • Keeps track of the line number: position
    • Specify position if entering in the middle of a file: FileIter(f, position=10)
  • Peek at the next line: peek()
  • Jump ahead n lines jump(n)
  • Check if empty: isempty()
  • Filter out unimportant lines:
    • Always filter: FileIter(f, filter_func=is_data)
    • Filter only single next(): filter_next(filter_func)
>>> def is_data(line: str) -> bool:
...    return len(line) > 0 and (line[0] != "#")
>>> my_iter = FileIter(
...     ["Hello", "", "# comment", "World", "How", "are", "you?"],
...     filter_func=is_data
... )
>>> next(my_iter)
'Hello'
>>> my_iter.peek()  # peek does not respect filter_func
''
>>> next(my_iter)  # skips "" and "# comment"
'World'
>>> my_iter.position
3
>>> my_iter.current_line
'World'
>>> my_iter.jump(3)  # jump does not respect filter_func
'you?'
>>> my_iter.position
6
>>> my_iter.isempty()
True
>>> my_iter.peek(default="default")
'default'

Credits

This package was created with Cookiecutter and the jevandezande/poetry-cookiecutter project template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

file_iter-0.1.1.tar.gz (4.6 kB view hashes)

Uploaded Source

Built Distribution

file_iter-0.1.1-py3-none-any.whl (5.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page