fist¶
Filesets
Handle & manipulate sets of files
This module aims at providing classes to handle and manipulate sets of
files. Two simple examples are a simple set containing one file
(fist.fistSingle
) or a glob based set of files
(fist.fistFileset
). A more complicated example is
fistMapset
that maps another fileset based on a pattern.
Each fileset inherits from list - hence fist filesets behave as lists.
Future work should allow the definition of remote filesets (for example over http or ssh).
Each fist class is istantiated with a url defining the file(set). In
the case of fist.fistFileset
this url contains a globbing
characters:
fs = fist.fistFileset('/tmp/*,txt')
This fileset object contains a list with all *.txt files in /tmp. Subsequently it is possible to map this set
-
class
fist.
fistCore
(url, context=None)¶ Core class for all fist classes
-
resolve
()¶ This function needs to be overridden context
-
-
class
fist.
fistFileset
(url, context=None)¶ Most basic set of files - handle a set of files described by a single URI with wildcards, for example:
* `*.txt` * `../*.txt` * `file:///home/name/data/*.txt`
>>> f = fistFileset('*.txt') >>> assert(f.path=='.') >>> assert(f.glob=='*.txt') >>> assert(f.path=='.') >>> assert(f.glob=='*.txt') >>> f = fistFileset('/tmp') >>> assert(f.path=='/tmp') >>> assert(f.glob=='*') >>> f = fistFileset('/tmp/*.txt') >>> assert(f.path=='/tmp') >>> assert(f.glob=='*.txt') >>> f = fistFileset('../*.txt') >>> assert(f.path=='..') >>> assert(f.glob=='*.txt') >>> f = fistFileset(os.path.join(wd, 'in', '*.txt')) >>> f.resolve() >>> assert(len(f) == 100) >>> f = fistFileset(os.path.join(wd, 'in', 'in1*.txt')) >>> f.resolve() >>> assert(len(f) == 10) >>> f = fistFileset('~/*') >>> f.resolve() >>> assert(len(f) > 0)
-
class
fist.
fistMapset
(url, context=None)¶ Map set - map a fileset based on a target uri
>>> f = fistFileset(os.path.join(wd, 'in', '*')) >>> f.resolve() >>> assert(len(f) == 100) >>> ## >>> ## Null mapping >>> ## >>> m = fistMapset('*/*') >>> m.resolve(f) >>> assert(len(m) == 100) >>> assert(os.path.join(wd, 'in/in18.txt') in m) >>> ## >>> ## simple folder mapping >>> ## >>> m = fistMapset('out/*') >>> m.resolve(f) >>> assert(len(m) == 100) >>> assert('out/in18.txt' in m) >>> ## >>> ## simple folder mapping >>> ## >>> m = fistMapset('./*') >>> m.resolve(f) >>> assert(len(m) == 100) >>> assert('./in18.txt' in m) >>> ## >>> ## simple folder & mapping & extension append >>> ## >>> m = fistMapset('out/*.out') >>> m.resolve(f) >>> assert(len(m) == 100) >>> assert('out/in18.txt.out' in m) >>> ## >>> ## New from fileset - now with a pattern defining the extension >>> ## >>> f = fistFileset(os.path.join(wd, 'in', '*.txt')) >>> f.resolve() >>> ## >>> ## extension mapping >>> ## >>> m = fistMapset('out/*.out') >>> m.resolve(f) >>> assert(len(m) == 100) >>> assert('out/in18.out' in m) >>> ## >>> ## New from fileset - now with a pattern defining file glob & >>> ## extension >>> ## >>> f = fistFileset(os.path.join(wd, 'in', 'in*.txt')) >>> f.resolve() >>> ## >>> ## more complex filename mapping >>> ## >>> m = fistMapset('out/test*.out') >>> m.resolve(f) >>> assert(len(m) == 100) >>> assert('out/test18.out' in m) >>> ## >>> ## mapping keeping the extension the same >>> ## >>> m = fistMapset('out/test*.txt') >>> m.resolve(f) >>> assert(len(m) == 100) >>> assert('out/test18.txt' in m)
-
resolve
(mapFrom)¶ Resolve the mapped set based on a input fileSet
-
resolver
(mapFrom, list)¶ map all files in the incoming list
-