filename_parser
¶
Create filename pairs, triplets etc, with expected extensions
|
Split filename into fileroot, extension, trailing suffix; guess type. |
|
Split |
|
Return filenames with standard extensions from template name |
TypesFilenamesError
¶
parse_filename¶
- nibabel.filename_parser.parse_filename(filename: FileSpec, types_exts: ty.Sequence[ExtensionSpec], trailing_suffixes: ty.Sequence[str], match_case: bool = False) tuple[str, str, str | None, str | None] ¶
Split filename into fileroot, extension, trailing suffix; guess type.
- Parameters:
- filenamestr or os.PathLike
filename in which to search for type extensions
- types_extssequence of sequences
sequence of (name, extension) str sequences defining type to extension mapping.
- trailing_suffixessequence of strings
suffixes that should be ignored when looking for extensions
- match_casebool, optional
If True, match case of extensions and trailing suffixes when searching in filename, otherwise do case-insensitive match.
- Returns:
- pthstr
path with any matching extensions or trailing suffixes removed
- extstr
If there were any matching extensions, in types_exts return that; otherwise return extension derived from
os.path.splitext
.- trailingstr
If there were any matching trailing_suffixes return that matching suffix, otherwise ‘’
- guessed_typestr
If we found a matching extension in types_exts return the corresponding
type
Examples
>>> types_exts = (('t1', 'ext1'),('t2', 'ext2')) >>> parse_filename('/path/fname.funny', types_exts, ()) ('/path/fname', '.funny', None, None) >>> parse_filename('/path/fnameext2', types_exts, ()) ('/path/fname', 'ext2', None, 't2') >>> parse_filename('/path/fnameext2', types_exts, ('.gz',)) ('/path/fname', 'ext2', None, 't2') >>> parse_filename('/path/fnameext2.gz', types_exts, ('.gz',)) ('/path/fname', 'ext2', '.gz', 't2')
splitext_addext¶
- nibabel.filename_parser.splitext_addext(filename: FileSpec, addexts: ty.Sequence[str] = ('.gz', '.bz2', '.zst'), match_case: bool = False) tuple[str, str, str] ¶
Split
/pth/fname.ext.gz
into/pth/fname, .ext, .gz
where
.gz
may be any of passed addext trailing suffixes.- Parameters:
- filenamestr or os.PathLike
filename that may end in any or none of addexts
- match_casebool, optional
If True, match case of addexts and filename, otherwise do case-insensitive match.
- Returns:
- frootstr
Root of filename - e.g.
/pth/fname
in example above- extstr
Extension, where extension is not in addexts - e.g.
.ext
in example above- addextstr
Any suffixes appearing in addext occurring at end of filename
Examples
>>> splitext_addext('fname.ext.gz') ('fname', '.ext', '.gz') >>> splitext_addext('fname.ext') ('fname', '.ext', '') >>> splitext_addext('fname.ext.foo', ('.foo', '.bar')) ('fname', '.ext', '.foo')
types_filenames¶
- nibabel.filename_parser.types_filenames(template_fname: FileSpec, types_exts: ty.Sequence[ExtensionSpec], trailing_suffixes: ty.Sequence[str] = ('.gz', '.bz2'), enforce_extensions: bool = True, match_case: bool = False) dict[str, str] ¶
Return filenames with standard extensions from template name
The typical case is returning image and header filenames for an Analyze image, that expects an ‘image’ file type with extension
.img
, and a ‘header’ file type, with extension.hdr
.- Parameters:
- template_fnamestr or os.PathLike
template filename from which to construct output dict of filenames, with given types_exts type to extension mapping. If
self.enforce_extensions
is True, then filename must have one of the defined extensions from the types list. Ifself.enforce_extensions
is False, then the other filenames are guessed at by adding extensions to the base filename. Ignored suffixes (from trailing_suffixes) append themselves to the end of all the filenames.- types_extssequence of sequences
sequence of (name, extension) str sequences defining type to extension mapping.
- trailing_suffixessequence of strings, optional
suffixes that should be ignored when looking for extensions - default is
('.gz', '.bz2')
- enforce_extensions{True, False}, optional
If True, raise an error when attempting to set value to type which has the wrong extension
- match_casebool, optional
If True, match case of extensions and trailing suffixes when searching in template_fname, otherwise do case-insensitive match.
- Returns:
- types_fnamesdict
dict with types as keys, and generated filenames as values. The types are given by the first elements of the tuples in types_exts.
Examples
>>> types_exts = (('t1','.ext1'),('t2', '.ext2')) >>> tfns = types_filenames('/path/test.ext1', types_exts) >>> tfns == {'t1': '/path/test.ext1', 't2': '/path/test.ext2'} True
Bare file roots without extensions get them added
>>> tfns = types_filenames('/path/test', types_exts) >>> tfns == {'t1': '/path/test.ext1', 't2': '/path/test.ext2'} True
With enforce_extensions == False, allow first type to have any extension.
>>> tfns = types_filenames('/path/test.funny', types_exts, ... enforce_extensions=False) >>> tfns == {'t1': '/path/test.funny', 't2': '/path/test.ext2'} True