Skip to main content

Object-oriented filesystem paths

Project description

pathlib offers a set of classes to handle filesystem paths. It offers the following advantages over using string objects:

  • No more cumbersome use of os and os.path functions. Everything can be done easily through operators, attribute accesses, and method calls.
  • Embodies the semantics of different path types. For example, comparing Windows paths ignores casing.
  • Well-defined semantics, eliminating any warts or ambiguities (forward vs. backward slashes, etc.).

Requirements

Python 3.2 or later is recommended, but pathlib is also usable with Python 2.7.

Install

easy_install pathlib or pip install pathlib should do the trick.

Examples

Importing the module classes:

>>> from pathlib import *

Listing Python source files in a directory:

>>> p = Path('.')
>>> list(p.glob('*.py'))
[PosixPath('test_pathlib.py'), PosixPath('setup.py'),
 PosixPath('pathlib.py')]

Listing all Python source files in this directory tree:

>>> list(p.glob('**/*.py'))
[PosixPath('test_pathlib.py'), PosixPath('setup.py'),
 PosixPath('pathlib.py'), PosixPath('docs/conf.py'),
 PosixPath('build/lib/pathlib.py')]

Listing subdirectories:

>>> [x for x in p if x.is_dir()]
[PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'),
 PosixPath('__pycache__'), PosixPath('build')]

Navigating inside a directory tree:

>>> p = Path('/etc')
>>> q = p['init.d/reboot']
>>> q
PosixPath('/etc/init.d/reboot')
>>> q.resolve()
PosixPath('/etc/rc.d/init.d/halt')

Querying path properties:

>>> q.exists()
True
>>> q.is_dir()
False
>>> q.st_mode
33261

Opening a file:

>>> with q.open() as f: f.readline()
...
'#!/bin/bash\n'

Documentation

The full documentation can be read at Read the Docs.

Contributing

The issue tracker and repository are hosted by BitBucket.

History

Version 0.7

  • Add ‘**’ (recursive) patterns to Path.glob().
  • Fix openat() support after the API refactoring in Python 3.3 beta1.
  • Add a target_is_directory argument to Path.symlink_to()

Version 0.6

  • Add Path.is_file() and Path.is_symlink()
  • Add Path.glob() and Path.rglob()
  • Add PurePath.match()

Version 0.5

  • Add Path.mkdir().
  • Add Python 2.7 compatibility by Michele Lacchia.
  • Make parent() raise ValueError when the level is greater than the path length.

Project details


Release history Release notifications

History Node

1.0.1

History Node

1.0

History Node

0.97

History Node

0.8

This version
History Node

0.7

History Node

0.6

History Node

0.5

History Node

0.4

History Node

0.3

History Node

0.2

History Node

0.1

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
pathlib-0.7.tar.gz (34.0 kB) Copy SHA256 hash SHA256 Source None Jul 29, 2012

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page