Skip to main content

Easy to use file search and file path management in python.

Project description

pyfilemanager

src PyPI - Version Documentation Status GitHub license

Easy to use file search and file path management in python.

Installation

pip install pyfilemanager

Quickstart

from pyfilemanager import FileManager
fm = FileManager(r'C:\videos')
fm.add('canon', '*Camera.avi', include='canon')
video_list = fm['video']

Usage

Consider the following directory structure

C:\videos
├── sony
│   ├── 142Camera.avi
│   ├── 143Camera.avi
│   ├── notes.txt
├── panasonic
│   ├── 151Camera.avi
│   ├── 143Camera.avi
│   ├── notes.txt
├── panasonic2
│   ├── 201Camera.avi
│   ├── 202.mp4
├── canon
│   ├── 51Camera.avi
│   ├── 40Camera.avi
│   ├── notes.txt
├── notes
│   ├── notes1.txt
│   ├── notes2.txt
  1. Import the FileManager class.
    from pyfilemanager import FileManager
    
  2. Initialize the file manager.
    fm = FileManager(r'C:\videos', exclude_hidden=True)
    
  3. Add files based on different inclusion and exclusion criteria. Use the include parameter to keep file paths that contain all of the supplied strings anywhere in the file path. Use the exclude parameter to disregard file paths that contain any of the supplied string anywhere in the file path.
     fm.add()
     # add all files in the directory under the tag 'all'
     # achieves the same result as fm.add('all') and fm.add('*.*')
    
     fm.add('*.avi')
     # add all files with extension .avi under the tag 'avi'
     # this is short for fm.add('avi', '*.avi'), and only works for patterns that start with *.
    
     fm.add('canon', '*Camera.avi', include='canon')
     # include=canon means that file path must contain canon
    
     fm.add('sony42', '*Camera.avi', include=['sony', '42'])
     # file path must contain sony AND 42
     # grabs one file - sony\142Camera.avi
     
     fm.add('videos', ['*.avi', '*.mp4'])
     # add multiple conditions by supplying them as a list or tuple
     
     fm.add('panasonic', '*.avi', include='panasonic', exclude='panasonic2')
     # grab videos in the panasonic folder
     
     fm.add('notes', 'notes*.txt')
     # grab all notes
    
     fm.add('notes', 'notes*.txt', include='notes\\notes')
     # grab notes from the notes folder
     # this will overwrite the previous notes entry
    
     fm.add('notes', 'notes*.txt', exclude=['sony', 'panasonic', 'panasonic2', 'canon'])
     # achieves the same result as the previous line
    
     fm.add_by_depth(max_depth=1)
     # creates the tags 'files0' and 'files1' (new in v1.1)
     # files0 tag will contain paths for files in the base directory (0 entries)
     # files1 tag will contain paths for files in the immediate sub-directories (13 entries)
    
  4. Retrieve file paths using a dict-like convention.
     fm['canon']
     # Retrieve by the tag 'canon'
     # Returns canon/40Camera.avi and canon/51Camera.avi
    
     fm['143Camera']
     # When a tag is not found, retrieve file paths by an exact match to the file stem.
     # Returns panasonic/143Camera.avi and sony/143Camera.avi
    
     fm['20']
     # If the key doesn't match a tag or a stem of a filename, do a loose-search to retrieve all entries where the tag is anywhere in the full path.
     # Returns panasonic2/201Camera.avi and panasonic2/202.mp4
    
     fm['notes?.txt']
     # Search for files using special chracters *, ?, !, [] specified in fnmatch
     # Returns notes/notes1.txt and notes/notes2.txt
    
  5. Add and retrieve in one line of code.
    fm.add('canon', '*Camera.avi', include='canon')['canon']
    # Note that the method returns the instance of the FileManager object. 
    
  6. Retrieve all the added keys using fm.get_tags()
    fm.get_tags()
    # returns a list ['canon', 'sony42', 'videos', 'panasonic', 'notes']
    
  7. Retrieve paths of all the added files.
    fm.all_files
    
  8. Get a report of the number of files, and the occupied space.
     fm.report()
    
    2 canon files taking up 0.000 MB
    1 sony42 files taking up 0.000 MB
    8 videos files taking up 0.000 MB
    2 panasonic files taking up 0.000 MB
    5 txt files taking up 0.000 MB
    

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Praneeth Namburi

Project Link: https://github.com/praneethnamburi/pyfilemanager

Acknowledgments

This tool was developed as part of the ImmersionToolbox initiative at the MIT.nano Immersion Lab. Thanks to NCSOFT for supporting this initiative.

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

pyfilemanager-1.1.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

pyfilemanager-1.1.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file pyfilemanager-1.1.0.tar.gz.

File metadata

  • Download URL: pyfilemanager-1.1.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.8.2 Windows/10

File hashes

Hashes for pyfilemanager-1.1.0.tar.gz
Algorithm Hash digest
SHA256 e826ac9c78d0726f3dde9fa40d3138ef7bbf0cab91f85c403bfc2265993bc689
MD5 4c2b7732c79213daeadb0549c8c3c022
BLAKE2b-256 2d1335c11896a04681205d01751590ac5a87d4e23f2d234d51d315aa85250b2e

See more details on using hashes here.

File details

Details for the file pyfilemanager-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyfilemanager-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.8.2 Windows/10

File hashes

Hashes for pyfilemanager-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b18dbe49a7cd2e3e254decd964db7acb0da0f47fda3ffed4a128dafaa4b215cc
MD5 b056818bf26f7a5171f916dc3fea1901
BLAKE2b-256 8625e85cced58452c3887553b0db1a3802cd6903dfd7a228147d6198f9191acf

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