ballet.util.fs module

ballet.util.fs.isemptyfile(filepath)[source]

Determine if the file both exists and isempty

Return type

bool

ballet.util.fs.pwalk(d, **kwargs)[source]

Similar to os.walk but with pathlib.Path objects

Return type

Iterator[Path]

ballet.util.fs.replaceext(filepath, new_ext)[source]

Replace any existing file extension with a new one

If the new extension is the empty string, all existing extensions will be removed.

Example:

>>> replaceext('/foo/bar.txt', 'py')
'/foo/bar.py'
>>> replaceext('/foo/bar.txt', '.doc')
'/foo/bar.doc'
Parameters
  • filepath (Union[str, PathLike]) – file path

  • new_ext (str) – new file extension; if a leading dot is not included, it will be added.

Return type

str

ballet.util.fs.spliceext(filepath, s)[source]

Add s into filepath before the extension

Return type

str

ballet.util.fs.splitext2(filepath)[source]

Split filepath into root, filename, ext

Return type

Tuple[str, str, str]

ballet.util.fs.synctree(src, dst, onexist=None)[source]

Recursively sync files at directory src to dst

This is more or less equivalent to:

cp -n -R ${src}/ ${dst}/

If a file at the same path exists in src and dst, it is NOT overwritten in dst. Pass onexist in order to raise an error on such conditions.

Parameters
  • src (Union[str, PathLike]) – source directory

  • dst (Union[str, PathLike]) – destination directory, does not need to exist

  • onexist (Optional[Callable[[Path], None]]) – function to call if file exists at destination, takes the full path to destination file as only argument

Return type

List[Tuple[Path, str]]

Returns

changes made by synctree, list of tuples of the form (“/absolute/path/to/file”, “<kind>”) where the change kind is one of “dir” (new directory was created) or “file” (new file was created).