A Python library for parsing frame ranges and file sequences based on a similar library found in Katana.
Project description
A Python library for parsing frame ranges and file sequences based on a similar library found in Katana.
Frame Range Shorthand
Support for:
- Standard: 1-10
- Comma Delimited: 1-10,10-20
- Chunked: 1-100x5
- Filled: 1-100y5
- Staggered: 1-100:3 (1-100x3, 1-100x2, 1-100)
- Negative frame numbers: -10-100
- Padding: #=4 padded, @=single pad
- Printf Syntax Padding: %04d=4 padded, %01d=1 padded
- Houdini Syntax Padding: $F4=4 padding, $F=1 padded
FrameSets
A FrameSet wraps a sequence of frames in a list list container.
Iterate a FrameSet
fs = fileseq.FrameSet("1-5")
for f in fs:
print f
Access Frames
Using Indices:
>>> fs = fileseq.FrameSet("1-100:8")
>>> fs[0] # First frame.
1
>>> fs[-1] # Last frame.
98
Using Convenience Methods:
>>> fs = fileseq.FrameSet("1-100:8")
>>> fs.start() # First frame.
1
>>> fs.end() # Last frame.
98
FileSequence
Instantiate from String
fileseq.FileSequence("/foo/bar.1-10#.exr")
Format Path for VFX Software
Using FileSequence.format Method:
>>> seq = fileseq.FileSequence("/foo/bar.1-10#.exr")
>>> seq.format(template='{dirname}{basename}{padding}{extension}')
"/foo/bar.#.exr"
Joining:
>>> seq = fileseq.FileSequence("/foo/bar.1-10#.exr")
>>> ''.join([seq.dirname(), seq.basename(), '%0{}d'.format(len(str(seq.end()))), seq.extension()])
"/foo/bar.%02d.exr"
Get List of File Paths
>>> seq = fileseq.FileSequence("/foo/bar.1-10#.exr")
>>> [seq[idx] for idx, fr in enumerate(seq.frameSet())]
['/foo/bar.0001.exr',
'/foo/bar.0002.exr',
'/foo/bar.0003.exr',
'/foo/bar.0004.exr',
'/foo/bar.0005.exr',
'/foo/bar.0006.exr',
'/foo/bar.0007.exr',
'/foo/bar.0008.exr',
'/foo/bar.0009.exr',
'/foo/bar.0010.exr']
Finding Sequences on Disk
Check a Directory for All Existing Sequences
seqs = fileseq.findSequencesOnDisk("/show/shot/renders/bty_foo/v1")
Check a Directory for One Existing Sequence.
- Use a '@' or '#' where you might expect to use '*' for a wildcard character.
- For this method, it doesn't matter how many instances of the padding character you use, it will still find your sequence.
Yes:
fileseq.findSequenceOnDisk('/foo/bar.@.exr')
Yes:
fileseq.findSequenceOnDisk('/foo/bar.@@@@@.exr')
No:
fileseq.findSequenceOnDisk('/foo/bar.*.exr')
Language Ports
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Fileseq-1.9.0.zip
(89.1 kB
view hashes)