Skip to main content

Democritus File System (Files and Directories)

PyPI CI Lint codecov The Democritus Project uses semver version 2.0.0 The Democritus Project uses ruff to format and lint code License: LGPL v3

Democritus functions[1] for working with files and directories.

[1] Democritus functions are simple, effective, modular, well-tested, and well-documented Python functions.

We use d8s (pronounced "dee-eights") as an abbreviation for democritus (you can read more about this here).

Installation

pip install d8s-file-system

Usage

You import the library like:

from d8s_file_system import *

Once imported, you can use any of the functions listed below.

Functions

  • def is_file(path: str) -> bool:
        """Determine if the given path is a file."""
    
  • def file_read(file_path: str) -> str:
        """Read the file at the given file_path as a string."""
    
  • def file_read_bytes(file_path: str) -> bytes:
        """Read the file at the given file_path as bytes."""
    
  • def file_write(file_path: str, file_contents: Any) -> bool:
        """Write the given content to the file at the given path (including a file name)."""
    
  • def file_append(file_path: str, file_contents: Any) -> bool:
        """Append the given content to the file at the given path (including a file name)."""
    
  • def file_move(starting_path: str, destination_path: str):
        """Move the file from the starting path to the destination path."""
    
  • def file_copy(starting_path: str, destination_path: str, *, preserve_metadata: bool = False):
        """Copy the file from the starting_path to the destination path."""
    
  • def file_delete(file_path: str):
        """Delete the given file."""
    
  • def file_owner_name(file_path: str) -> str:
        """Find the owner of the file at the given path."""
    
  • def file_change_owner(file_path: str):
        """Change the ownership of the given file."""
    
  • def file_ssdeep(file_path: str) -> str:
        """Find the ssdeep fuzzy hash of the file."""
    
  • def file_md5(file_path: str) -> str:
        """Find the md5 hash of the given file."""
    
  • def file_sha1(file_path: str) -> str:
        """Find the sha1 hash of the given file."""
    
  • def file_sha256(file_path: str) -> str:
        """Find the sha256 hash of the given file."""
    
  • def file_sha512(file_path: str) -> str:
        """Find the sha512 hash of the given file."""
    
  • def file_name_escape(file_name_arg: str) -> str:
        """Escape the name of a file so that it can be used as a file name in a file path."""
    
  • def file_name(file_path: str) -> str:
        """Find the file name from the given file path."""
    
  • def file_name_windows(windows_file_path: str) -> str:
        """Find the file name from the given windows_file_path."""
    
  • def file_name_unix(unix_file_path: str) -> str:
        """Find the file name from the given unix_file_path."""
    
  • def file_size(file_path: str) -> int:
        """Find the file size."""
    
  • def file_directory(file_path: str) -> str:
        """Return the directory in which the given file resides."""
    
  • def file_details(file_path: str) -> Dict[str, Union[str, int]]:
        """Get file hashes and file size for the given file."""
    
  • def file_exists(file_path: str) -> bool:
        """Check if the file exists."""
    
  • def file_is_readable(file_path: str) -> bool:
        """Check if the file is readable."""
    
  • def file_is_writable(file_path: str) -> bool:
        """Check if the file is writable."""
    
  • def file_is_executable(file_path: str) -> bool:
        """Check if the file is executable."""
    
  • def file_contains(file_path: str, pattern: str, *, pattern_is_regex: bool = False) -> bool:
        """Return whether or not the file contains the given pattern."""
    
  • def file_search(file_path: str, pattern: str, *, pattern_is_regex: bool = False) -> List[str]:
        """Search for the given pattern in the file."""
    
  • def file_name_matches(file_path: str, pattern: str) -> bool:
        """Return whether or not the file name contains the given pattern."""
    
  • def is_directory(path: str) -> bool:
        """Determine if the given path is a directory."""
    
  • def directory_exists(directory_path: str) -> bool:
        """Check if the directory exists."""
    
  • def directory_file_names(directory_path: str, *, recursive: bool = False) -> List[str]:
        """List files at the given directory_path."""
    
  • def directory_file_paths(directory_path: str, *, recursive: bool = False) -> List[str]:
        """List the file paths at the given directory_path."""
    
  • def directory_copy(src_path: str, dst_path: str):
        """Copy the directory from the src_path to the destination path."""
    
  • def directory_delete(directory_path: str):
        """Delete the given directory."""
    
  • def directory_create(directory_path: str, mode=0o777):
        """Create a directory."""
    
  • def directory_disk_usage(directory_path: str):
        """Return the disk usage for the given directory."""
    
  • def directory_disk_free_space(directory_path: str):
        """Return the free space in the given directory."""
    
  • def directory_disk_used_space(directory_path: str):
        """Return the used space in the given directory."""
    
  • def directory_disk_total_space(directory_path: str):
        """Return the total space in the given directory."""
    
  • def home_directory() -> str:
        """Return the home directory."""
    
  • def home_directory_join(path: str) -> str:
        """Join the given path with the home directory."""
    
  • def directory_move(src_path: str, dst_path: str):
        """Move the directory from the src_path to the dst_path."""
    
  • def directory_files_details(directory_path: str, *, recursive: bool = False) -> Dict[str, Dict[str, Union[str, int]]]:
        """Return the file details for each file in the directory at the given path."""
    
  • def directory_files_read(directory_path: str, *, recursive: bool = False) -> Iterable[Tuple[str, str]]:
        """Read all files in the directory_path."""
    
  • def directory_subdirectory_names(directory_path: str, *, recursive: bool = False) -> List[str]:
        """List the names of all subdirectories in the given directory."""
    
  • def directory_files_containing(
        directory_path: str, pattern: str, *, pattern_is_regex: bool = False, recursive: bool = False
    ) -> Dict[str, List[str]]:
        """Search for the given pattern in all files in the given directory_path."""
    
  • def directory_file_paths_matching(directory_path: str, pattern: str, *, recursive: bool = False) -> List[str]:
        """Return the paths of all of the files in the given directory which match the pattern."""
    
  • def directory_file_names_matching(directory_path: str, pattern: str, *, recursive: bool = False) -> List[str]:
        """Return the names of all of the files in the given directory which match the pattern."""
    
  • def directory_read_files_with_path_matching(
        directory_path: str, pattern: str, *, recursive: bool = False
    ) -> Iterable[Tuple[str, str]]:
        """Read all of the files in the given directory whose paths match the given pattern."""
    
  • def atomic_write(fpath, *, overwrite: bool = True, **cls_kwargs):
        """Create a context manager to write atomically using the AtomicWriterPerms class to update file permissions."""
    

Development

👋  If you want to get involved in this project, we have some short, helpful guides below:

If you have any questions or there is anything we did not cover, please raise an issue and we'll be happy to help.

Credits

This package was created with Cookiecutter and Floyd Hightower's Python project template.

Release files for d8s-file-system 0.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for d8s-file-system 0.11.0
File Size Uploaded
d8s_file_system-0.11.0.tar.gz 96.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for d8s-file-system 0.11.0
File Interpreter ABI Platform
d8s_file_system-0.11.0-py3-none-any.whl Python 3 none any Details

Total release size: 120.3 kB

Release files / d8s_file_system-0.11.0.tar.gz

Download URL d8s_file_system-0.11.0.tar.gz
Size 96.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3a07df280e88f7bdb8458cddec4455bb57886be049feee3a1e992f3aeddc386b
BLAKE2b-256 checksum
How to use checksums
864186e397a2260d007ade927e006dfb8433b4f14552e33707d915407eb6942b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 1, 2026.

Transparency log

Release files / d8s_file_system-0.11.0-py3-none-any.whl

Download URL d8s_file_system-0.11.0-py3-none-any.whl
Size 23.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf4015452880cc6c75022b56b8087090b574c332a88795904a57f72b8728e0af
BLAKE2b-256 checksum
How to use checksums
7cf9009fc30da0092c0608551e7afbdfca14c196ee76b1495f031d51188435c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.11.0 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page