Skip to main content

Generate unique file or directory paths with flexible formatting.

Project description

uniqpath

Generate unique file or directory paths by appending customizable suffixes.

Description

uniqpath is a lightweight Python utility to generate unique file or directory paths by adding formatted suffixes.
It helps avoid overwriting existing files by incrementing numeric suffixes or adding randomized strings, UUIDs, or timestamps.

Features

  • Incremental numeric suffix {num} starting at 1
  • Timestamp suffix {timestamp} (UNIX epoch seconds)
  • Random alphanumeric suffix {rand[:n]} with customizable length (default 6)
  • UUID suffix {uuid[:n]} truncated to customizable length (default 32)
  • Option to add suffix only if original path exists
  • Returns either Path or str for integration flexibility
  • Simple and dependency-free (only standard library)
  • Designed for files and directories

Installation

pip install uniqpath

Usage

from uniqpath import unique_path

# Basic usage with incremental number suffix
p1 = unique_path("output.txt")  # -> output_1.txt if output.txt exists

# Custom suffix with random string of length 8
p2 = unique_path("log.txt", suffix_format="_{rand:8}")

# Use UUID suffix truncated to 6 characters
p3 = unique_path("data", suffix_format="_{uuid:6}")

# Add suffix only if the path exists, otherwise return original path
p4 = unique_path("report.txt", if_exists_only=True)

# Get result as string instead of Path
p5 = unique_path("file.txt", return_str=True)

Parameters

  • path (str or Path): The base file or directory path.

  • suffix_format (str, default _{num}): Suffix pattern with placeholders:

    • {num}: incrementing number starting from 1
    • {timestamp}: UNIX timestamp in seconds
    • {rand[:n]}: random alphanumeric string, length n (default 6)
    • {uuid[:n]}: UUID4 hex string truncated to n chars (default 32)
  • verbose (bool, default False): Enable logging of attempts and results.

  • if_exists_only (bool, default True): Only add suffix if base path exists.

  • return_str (bool, default False): Return a string path instead of a Path object.

Notes

  • The function does not handle concurrency and is not thread-safe.
  • Date/time placeholders use current datetime but do not support full strftime syntax.
  • The function works for both files and directories.
  • Make sure to handle potential race conditions externally if used in parallel environments.

License

MIT License

Author

Julien Rabault — julienrabault@icloud.com

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

uniqpath-0.1.3.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

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

uniqpath-0.1.3-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file uniqpath-0.1.3.tar.gz.

File metadata

  • Download URL: uniqpath-0.1.3.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for uniqpath-0.1.3.tar.gz
Algorithm Hash digest
SHA256 d83185ccb9b2589ab8da161b615474782518f532164bfaf35d7ed34d7b26a137
MD5 794eaa332739f7c410e8f4479a5ae706
BLAKE2b-256 e3c967653206574ee350ba8b0d6e2a59c614a4a5430a827737af307f180ac705

See more details on using hashes here.

File details

Details for the file uniqpath-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: uniqpath-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for uniqpath-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1ef85231215817091695eb3bbc356cd637cef0bf6a2989b2eb0de51f55ff3805
MD5 ec9d50d5da35eb96d639ba29c3ad523e
BLAKE2b-256 b37066f55312fe82a6b64fac00446068cc187072f28b31f53f70dcaee3eaf88b

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