Skip to main content

File sequences

A FileSequence allows you to write to multiple files using standard Python file descriptor read / write functionality.

You specify the file size limit and naming scheme when opening the sequence, but the library handles creating new files as needed.

Each call to the opened FileSequence’s write function will potentially create a new file, if the chunk you want to write will push the file over the limit. So if you want to only split files on newlines, call write() once for each line. If you want behavior more like BSD’s split command, you can write one byte at a time. Though, at that rate, split is probably the better choice.

Installation PyPI version

pip install filesequence

API

You can simply use a FileSequence object as if it were a file.

  • filesequence.open(...) returns a FileSequence object.

  • my_file_sequence.write(line) takes a line and writes it to the next available file.

Note that FileSequence requires with wrapping, as opposed to the Python built-in open():

import filesequence

filenames = filesequence.interpolator('numbers-%02d.txt', xrange(1000))

with filesequence.open(filenames, 1000000) as out:
    for a in xrange(1000):
        for b in xrange(1000):
            out.write('# %d * %d = %d\n' % (a, b, a * b))

Now you have a huge multiplication table in 20 different files that are 1MB or less! So awesome!

Want to keep going?

filenames = filesequence.interpolator('numbers-%02d.txt', xrange(1000))

with filesequence.open(filenames, 1000000, 'a') as out:
    ...

The ‘a’ flag will make the sequence jump to the last existing file, and start writing from there.

Bonus

A filesequence script will be installed to your PATH. This script reads STDIN line by line and command line arguments for the filename pattern and filesize limit (see filesequence --help), and writes out a series of files of at most that filesize and without breaking any lines.

$ filesequence --help

usage: cli.py [-h] [--limit LIMIT] [--pattern PATTERN] [--version]

Write STDIN into a sequence of files, splitting only at newlines

optional arguments:
  -h, --help         show this help message and exit
  --limit LIMIT      Maximum bytes per file (default: 50000000)
  --pattern PATTERN  Filename string pattern: generate filenames in sequence
                     by interpolating `pattern % indices.next()`
                     (default: split.%02d)
  --version          show program's version number and exit

TODO

  • Support reading (flags r and r+).

Development

This package is published to PyPI at pypi.python.org/pypi/filesequence.

Typical publish process:

  1. pandoc README.md -o README.rst

  2. If needed, git commit ...

  3. npm version patch

  4. git push

  5. python setup.py register sdist upload

Testing

Continuous integration:

Travis CI Build Status

Or run tests locally (after installing):

nosetests

License

Copyright (c) 2013 Christopher Brown. MIT Licensed.

Metadata

Release files for filesequence 0.1.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for filesequence 0.1.12
File Size Uploaded
filesequence-0.1.12.tar.gz 6.4 kB Details

Release files / filesequence-0.1.12.tar.gz

Download URL filesequence-0.1.12.tar.gz
Size 6.4 kB
Tags Source
SHA-256 checksum
How to use checksums
03615195414bee5cf225375939589de8e52307d2733bfa1a4a3095cbe67c34d9
BLAKE2b-256 checksum
How to use checksums
1f2eedafc6893b1e9d13d2f342d00df2c98f15338351ae0f83e60409154e1dcd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.12 This release

1 release file

0.1.11

1 release file

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

0.1.3

0.1.2

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page