Skip to main content

Find files using a simple syntax.

Project description

FileFinder

Find files using a simple syntax.

PyPI GitHub release codecov test status Documentation Status

FileFinder allows to specify the structure of filenames using a simple syntax. Parts of the file structure varying from file to file are indicated within named groups, similarly to a regular expression. Once setup, it can:

  • Find corresponding files in a directory (and sub-directories)
  • Parse values from the filenames
  • Select only filenames with specific values or which pass filter functions
  • Generate filenames

Quick examples

The following example will find all files with the structure Data/param_[parameter]/[year]/Temperature_[date].nc:

finder = Finder('/.../Data', 'param_%(parameter:fmt=.1f)/%(Y)/Temperature_%(Y)%(m)%(d).nc')
files = finder.get_files()

We can also select only some files, for instance only in january:

finder.fix_group('m', 1)
files = finder.get_files()

Or apply more complicated filters:

finder.fix_by_filters("m", lambda m: m % 2 == 0)

We can retrieve values from found files:

filename, matches = finder.files[0]
parameter = matches["parameter"]
# the date as a datetime object
date = matches.get_date()

And we can generate a filename with a set of parameters:

finder.make_filename(parameter=0.5, Y=2000, m=1, d=1)
# Specifying the month is optional since we already fixed it to 1.

Date as a special citizen: the "date" group name is (by default, but this can be deactivated) considered special in some operation, like fixing multiple groups from a datetime object, or having a filter opering on a full date:

finder.fix_group("date", datetime(2018, 2, 1))
finder.fix_by_filter("date", lambda d: d > datetime(2018, 2, 1))

Requirements

Python >= 3.10

Installation

From pip:

pip install filefinder

From source:

git clone https://github.com/Descanonge/filefinder.git
cd filefinder
pip install -e .

or

pip install -e https://github.com/Descanonge/filefinder.git#egg=filefinder

Documentation

Documentation is available at filefinder.readthedocs.io.

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

filefinder-1.3.1.tar.gz (59.9 kB view details)

Uploaded Source

Built Distribution

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

filefinder-1.3.1-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

File details

Details for the file filefinder-1.3.1.tar.gz.

File metadata

  • Download URL: filefinder-1.3.1.tar.gz
  • Upload date:
  • Size: 59.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for filefinder-1.3.1.tar.gz
Algorithm Hash digest
SHA256 99373311f91de6f9edeb7e853e218afffa9a073487a421add16a8f1ff92fc69a
MD5 6492942ac416be75eddffda7333c174f
BLAKE2b-256 e3373c770a15d3b73b8c1dda50fb1ddb5fb61b82d63a0491569bbf77fb0ec2d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for filefinder-1.3.1.tar.gz:

Publisher: pypi-publish.yml on Descanonge/filefinder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file filefinder-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: filefinder-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 28.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for filefinder-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d8a114d2ba7a55e42da15e1547c1cf10c57501d2f3e1ec6a66114cb38b0e6c40
MD5 44a25e58f877466b50b0bc0fa48c8ed6
BLAKE2b-256 d276108ce7802100027ae1e160a54396321b854d6b065e99697f02a44a36555a

See more details on using hashes here.

Provenance

The following attestation bundles were made for filefinder-1.3.1-py3-none-any.whl:

Publisher: pypi-publish.yml on Descanonge/filefinder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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