labm8.fs¶
High level filesystem interface.
-
exception
labm8.fs.Error¶
-
exception
labm8.fs.File404¶
-
labm8.fs.abspath(*components)¶ Get an absolute file path.
Concatenate all components into an absolute path.
-
labm8.fs.basename(*components)¶ Return the basename of a given file path.
-
labm8.fs.cd(path)¶ Change working directory.
Returns absolute path to new working directory.
-
labm8.fs.cdpop()¶ Return the last directory.
Returns absolute path to new working directory.
-
labm8.fs.cp(src, dst)¶ Copy a file or directory.
If source is a directory, this recursively copies the directory and its contents. If the destination is a directory, then this creates a copy of the source in the destination directory with the same basename.
If the destination already exists, this will attempt to overwrite it.
Parameters: - src (string) – path to the source file or directory.
- dst (string) – path to the destination file or directory.
Raises: IOError– if source does not exist.
-
labm8.fs.dirname(*components)¶ Return the directory name of a given file path.
-
labm8.fs.du(*components, **kwargs)¶ Get the size of a file in bytes or as a human-readable string.
Parameters: - *components (str[]) – Path to file.
- **kwargs – If “human_readable” is True, return a formatted string, e.g. “976.6 KiB” (default True)
Returns: If “human_readble” kwarg is True, return str, else int.
Return type: int or str
-
labm8.fs.exists(*components)¶ Return whether a file exists.
-
labm8.fs.files_from_list(*paths)¶ Return a list of all file paths from a list of files or directories.
For each path in the input: if it is a file, return it; if it is a directory, return a list of files in the directory.
Parameters: paths (list of str) – List of file and directory paths. Returns: Absolute file paths. Return type: list of str Raises: File404– If any of the paths do not exist.
-
labm8.fs.is_subdir(child, parent)¶ Determine if “child” is a subdirectory of “parent”.
If child == parent, returns True.
-
labm8.fs.isdir(*components)¶ Return whether a path exists, and is a directory.
-
labm8.fs.isexe(*components)¶ Return whether a path is an executable file.
Parameters: path (str) – Path of the file to check. Examples
>>> fs.isexe("/bin/ls") True
>>> fs.isexe("/home") False
>>> fs.isexe("/not/a/real/path") False
Returns: True if file is executable, else false. Return type: bool
-
labm8.fs.isfile(*components)¶ Return whether a path exists, and is a file.
-
labm8.fs.ls(root='.', abspaths=False, recursive=False)¶ Return a list of files in directory.
Directory listings are sorted alphabetically. If the named directory is a file, return it’s path.
Examples
>>> fs.ls("foo") ["a", "b", "c"]
>>> fs.ls("foo/a") ["foo/a"]
>>> fs.ls("foo", abspaths=True) ["/home/test/foo/a", "/home/test/foo/b", "/home/test/foo/c"]
>>> fs.ls("foo", recursive=True) ["a", "b", "b/d", "b/d/e", "c"]
Parameters: - root (str) – Path to directory. Can be relative or absolute.
- abspaths (bool, optional) – Return absolute paths if true.
- recursive (bool, optional) – Recursively list subdirectories if true.
Returns: A list of paths.
Return type: list of str
Raises: OSError– If root directory does not exist.
-
labm8.fs.lsdirs(root='.', **kwargs)¶ Return only subdirectories from a directory listing.
Parameters: - root (str) – Path to directory. Can be relative or absolute.
- **kwargs – Any additional arguments to be passed to ls().
Returns: A list of directory paths.
Return type: list of str
Raises: OSError– If root directory does not exist.
-
labm8.fs.lsfiles(root='.', **kwargs)¶ Return only files from a directory listing.
Parameters: - root (str) – Path to directory. Can be relative or absolute.
- **kwargs – Any additional arguments to be passed to ls().
Returns: A list of file paths.
Return type: list of str
Raises: OSError– If root directory does not exist.
-
labm8.fs.mkdir(*components, **kwargs)¶ Make directory “path”, including any required parents. If directory already exists, do nothing.
-
labm8.fs.mkopen(p, *args, **kwargs)¶ A wrapper for the open() builtin which makes parent directories if needed.
-
labm8.fs.must_exist(*components)¶ Ensure path exists.
Parameters: *components (str[]) – Path components. Returns: File path. Return type: str Raises: File404– If path does not exist.
-
labm8.fs.mv(src, dst)¶ Move a file or directory.
If the destination already exists, this will attempt to overwrite it.
Parameters: - src (string) – path to the source file or directory.
- dst (string) – path to the destination file or directory.
Raises: File404– if source does not exist.IOError– in case of error.
-
labm8.fs.path(*components)¶ Get a file path.
Concatenate all components into a path.
-
labm8.fs.pwd()¶ Return the path to the current working directory.
-
labm8.fs.read(*components, **kwargs)¶ Read file and return a list of lines. If comment_char is set, ignore the contents of lines following the comment_char.
Raises: IOError– if reading path fails
-
labm8.fs.read_file(path)¶ Read file to string.
Parameters: path (str) – Source.
-
labm8.fs.rm(*components, **kwargs)¶ Remove a file or directory.
If path is a directory, this recursively removes the directory and any contents. Non-existent paths are silently ignored.
Supports Unix style globbing by default (disable using glob=False). For details on globbing pattern expansion, see:
Parameters: - *components (string[]) – path to the file or directory to remove. May be absolute or relative. May contain unix glob
- **kwargs – if “glob” is True, perform Unix style pattern expansion of paths (default: True).
-
labm8.fs.rmtrash(*components)¶ Move a file or directory to trash.
If file does not exist, nothing happens.
Examples
>>> fs.rmtrash("foo", "bar")
>>> fs.rmtrash("/home/labm8/file.txt")
Parameters: *components (string[]) – path to the file or directory.
-
labm8.fs.write_file(path, contents)¶ Write string to file.
Parameters: - path (str) – Destination.
- contents (str) – Contents.