Skip to main content

Democritus functions for working with files and directories.

Project description

Democritus File System (Files and Directories)

PyPI CI Lint codecov The Democritus Project uses semver version 2.0.0 The Democritus Project uses black to format 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 as an abbreviation for democritus (you can read more about this here).

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

d8s_file_system-0.8.0.tar.gz (32.4 kB view details)

Uploaded Source

Built Distribution

d8s_file_system-0.8.0-py2.py3-none-any.whl (28.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file d8s_file_system-0.8.0.tar.gz.

File metadata

  • Download URL: d8s_file_system-0.8.0.tar.gz
  • Upload date:
  • Size: 32.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for d8s_file_system-0.8.0.tar.gz
Algorithm Hash digest
SHA256 1ce48a59c06dc4cf47e75f9a872ed2c6606620dc1e9f7e884fd344b4d735816c
MD5 ea48e65b6439c3506d23118728368cbf
BLAKE2b-256 aa48eb9bef31eaa710f046f02502f620fdd0c35c3d21a2a5cfad20ccf65aa27d

See more details on using hashes here.

File details

Details for the file d8s_file_system-0.8.0-py2.py3-none-any.whl.

File metadata

  • Download URL: d8s_file_system-0.8.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 28.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for d8s_file_system-0.8.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 68c2887f71102f83d344c2ccdddd24af0cf36ecd319f1a302a9789b1a777948a
MD5 194ac473bc652e163c03f1ba828017d1
BLAKE2b-256 a886b4650c58c19620cfcc614474ecaf5ff5b4a496ab023aa7877e9006dc877f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page