Skip to main content

Object-oriented alternative to os/os.path/shutil

Project description

Update 2013-01-27: Version 0.2.1 has been in production since 2008 and is supported. Few bugs have been reported so the code is solid. The next version (to be called 1.0 or 2.0, I’m not sure which) will be mostly moderninzing the documentation and Python 3 support. Python 2.4 and 2.5 support will probably be dropped as is the case with most other Python projects migrating to 3.

The source is at https://github.com/mikeorr/unipath. The old repository (http://bitbucket.org/sluggo/unipath) has some pending issues but is otherwise no longer in use.

Unipath is package for doing pathname calculations and filesystem access in an object-oriented manner, an alternative to os.path.*, shutil.*, glob, and some os.* functions.. It’s based on Jason Orendorff’s path.py but does not adhere as strictly to the underlying functions’ syntax, in order to provide more user convenience and higher-level functionality. For example:

  • p.mkdir() succeeds silently if the directory already exists, and

  • p.mkdir(True) creates intermediate directories a la os.makedirs.

  • p.rmtree(parents=True) combines shutil.rmtree, os.path.isdir, os.remove, and os.removedirs, to recursively remove whatever it is if it exists.

  • p.read_file("rb") returns the file’s contents in binary mode.

  • p.needs_update([other_path1, ...]) returns True if p doesn’t exist or has an older timestamp than any of the others.

  • extra convenience functions in the unipath.tools module. dict2dir creates a directory hierarchy described by a dict. dump_path displays an ASCII tree of a directory hierarchy.

The Path class subclasses AbstractPath, which contains only those methods that don’t consult the filesystem. Most users just use the Path class and ignore the base class, but it’s there for specialized uses.

Here’s a comparision of some Path operations and their stdlib equivalents:

# Reference a file that’s two directories above another file. p = os.path.join(os.path.dirname(os.path.dirname(“/A/B/C”)), “file.txt”) p = Path(“A/B/C”).parent.parent.child(“file.txt”) p = Path(“A/B/C”).ancestor(2).child(“file.txt”) p0 = Path(“/A/B/C”); p = Path(p0.parent.parent, “file.txt”)

# Change the extension of a path. p = os.path.splitext(“image.jpg”)[0] + “.png” p = Path(“image.jpg”).name + “.png”

Documentation is in the README and on the website.

Unipath is for Python 2.4 or higher, and comes with a test suite..

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

Unipath-0.2.1.tar.gz (149.8 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: Unipath-0.2.1.tar.gz
  • Upload date:
  • Size: 149.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Unipath-0.2.1.tar.gz
Algorithm Hash digest
SHA256 9c337ea25e10c56b065dd8b4574bc2e490aa16eecf83a599b7b8a7541c64a287
MD5 da24f0e0d39931df3fc61f2db09d4e57
BLAKE2b-256 313c0d9c171043133affaee82154269da38a892727f13e8fa36bf221d7d979ac

See more details on using hashes here.

Supported by

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