Skip to main content

File primitives for Python

Project description

file-primitives

  • read_file: reads file with an option to specify default if file does not exist or a custom reader (like reader = lambda file: json.read(file))
  • write_file: writes file with auto-directory creation, custom writer, and optional atomic writes
  • ensure_dir: ensures a directory exists
  • delete_path: deletes a file or directory. Returns bool indicating success.
def read_file(
    path: Union[str, Path],
    bytes: bool = False,
    reader: Callable[..., T] = lambda file: file.read(),
    default: Union[D, _MissingType] = MISSING,
    encoding: str = "utf-8",
) -> Union[T, D]:
    pass

def write_file(
    path: Union[str, Path],
    data: T,
    bytes: bool = False,
    writer: Callable[[T, Any], Any] = lambda data, file: file.write(data),
    encoding: str = "utf-8",
    ensure_dir: bool = True,
    atomic: bool = False,
) -> None:
    pass

def ensure_dir(
    path: T,  # T = TypeVar("T", str, Path)
    is_file: bool = False,
) -> T:
    pass

def delete_path(
    path: Union[str, Path],
    missing_ok: bool = False,
    delete_empty_parents: bool = False,
) -> bool:
    pass

...

from file_primitives import read_file, write_file, ensure_dir, delete_path

# Simple file operations
content = read_file("config.json")

# Binary mode
binary_content = read_file("image.png", bytes=True)

# output dir will be created automatically by default
write_file("output/data.json", {"key": "value"}, writer=lambda data, file: json.dump(data, file))

# Atomic write
write_file("important.json", data, atomic=True)

# With error handling
config = read_file("missing.json", default="I am missing")

ensure_dir("logs/2024/january")  # Creates full path
ensure_dir("reports/summary.pdf", is_file=True)  # Creates "reports/" directory

# Delete operations
delete_path("temp/file.txt")
deleted = delete_path("temp/file.txt", missing_ok=True)

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

file_primitives-0.2.1.tar.gz (41.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

file_primitives-0.2.1-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file file_primitives-0.2.1.tar.gz.

File metadata

  • Download URL: file_primitives-0.2.1.tar.gz
  • Upload date:
  • Size: 41.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.2

File hashes

Hashes for file_primitives-0.2.1.tar.gz
Algorithm Hash digest
SHA256 8f70e58dfbbbe2618d4645f1aaf6d5e7d49f68136d86486312b0a88275bbcde6
MD5 0f4e293cd14c64eaf65b1104741e1812
BLAKE2b-256 250cb3cfd5cc741811bf9a22a5687cc0e1d0bf8eaff1f6d1ff378bd7d68dfb68

See more details on using hashes here.

File details

Details for the file file_primitives-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for file_primitives-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2c8e52eac6d1c5d81c620f733582ac4ddc344230d35aef9eba590c5c1cf4544e
MD5 5c630f8d9559be063019dab096c44c79
BLAKE2b-256 089a287e10aa0f5443e5ce58a6bd67b90756aa2db36181a581299379e2446021

See more details on using hashes here.

Supported by

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