fs.glob

Useful functions for working with glob patterns.

class fs.glob.BoundGlobber(fs: FS)[source]

A Globber object bound to a filesystem.

An instance of this object is available on every Filesystem object as the glob property.

__call__(pattern: str, path: str = '/', namespaces: Optional[List[str]] = None, case_sensitive: bool = True, exclude_dirs: Optional[List[str]] = None) → Globber[source]

Match resources on the bound filesystem againsts a glob pattern.

Parameters
  • pattern (str) – A glob pattern, e.g. "**/*.py"

  • namespaces (list) – A list of additional info namespaces.

  • case_sensitive (bool) – If True, the path matching will be case sensitive i.e. "FOO.py" and "foo.py" will be different, otherwise path matching will be case insensitive.

  • exclude_dirs (list) – A list of patterns to exclude when searching, e.g. ["*.git"].

Returns

An object that may be queried for the glob matches.

Return type

Globber

__init__(fs: FS) → None[source]

Create a new bound Globber.

Parameters

fs (FS) – A filesystem object to bind to.

class fs.glob.Counts(files, directories, data)
data

Alias for field number 2

directories

Alias for field number 1

files

Alias for field number 0

class fs.glob.GlobMatch(path, info)
info

Alias for field number 1

path

Alias for field number 0

class fs.glob.Globber(fs: FS, pattern: str, path: str = '/', namespaces: Optional[List[str]] = None, case_sensitive: bool = True, exclude_dirs: Optional[List[str]] = None)[source]

A generator of glob results.

__init__(fs: FS, pattern: str, path: str = '/', namespaces: Optional[List[str]] = None, case_sensitive: bool = True, exclude_dirs: Optional[List[str]] = None) → None[source]

Create a new Globber instance.

Parameters
  • fs (FS) – A filesystem object

  • pattern (str) – A glob pattern, e.g. "**/*.py"

  • path (str) – A path to a directory in the filesystem.

  • namespaces (list) – A list of additional info namespaces.

  • case_sensitive (bool) – If True, the path matching will be case sensitive i.e. "FOO.py" and "foo.py" will be different, otherwise path matching will be case insensitive.

  • exclude_dirs (list) – A list of patterns to exclude when searching, e.g. ["*.git"].

__iter__() → Iterator[GlobMatch][source]

Get an iterator of fs.glob.GlobMatch objects.

count() → fs.glob.Counts[source]

Count files / directories / data in matched paths.

Example

>>> my_fs.glob('**/*.py').count()
Counts(files=2, directories=0, data=55)
Returns

A named tuple containing results.

Return type

Counts

count_lines() → fs.glob.LineCounts[source]

Count the lines in the matched files.

Returns

A named tuple containing line counts.

Return type

LineCounts

Example

>>> my_fs.glob('**/*.py').count_lines()
LineCounts(lines=4, non_blank=3)
remove() → int[source]

Remove all matched paths.

Returns

Number of file and directories removed.

Return type

int

Example

>>> my_fs.glob('**/*.pyc').remove()
2
class fs.glob.LineCounts(lines, non_blank)
lines

Alias for field number 0

non_blank

Alias for field number 1

fs.glob.imatch(pattern: str, path: str) → bool[source]

Compare a glob pattern with a path (case insensitive).

Parameters
  • pattern (str) – A glob pattern.

  • path (str) – A path.

Returns

True if the path matches the pattern.

Return type

bool

fs.glob.match(pattern: str, path: str) → bool[source]

Compare a glob pattern with a path (case sensitive).

Parameters
  • pattern (str) – A glob pattern.

  • path (str) – A path.

Returns

True if the path matches the pattern.

Return type

bool

Example

>>> from fs.glob import match
>>> match("**/*.py", "/fs/glob.py")
True