Package: pyfilemanager
pyfilemanagerEasy to use file search and file path management in python.InstallationpipinstallpyfilemanagerQuickstartfrompyfilemanagerimportFileManagerfm=FileManager(r'C:\videos')fm.add('canon','*Camera.avi',include='canon')video_list=fm['video']UsageConsider the following directory structureC:\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.txtImport the FileManager class.frompyfilemanagerimportFileManagerInitialize the file manager.fm=FileManager(r'C:\videos',exclude_hidden=True)Add files based on different inclusion and exclusion criteria. Use the include parameter to keep file paths that containallof the supplied stringsanywherein the file path. Use the exclude parameter to disregard file paths that containanyof 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 canonfm.add('sony42','*Camera.avi',include=['sony','42'])# file path must contain sony AND 42# grabs one file - sony\142Camera.avifm.add('videos',['*.avi','*.mp4'])# add multiple conditions by supplying them as a list or tuplefm.add('panasonic','*.avi',include='panasonic',exclude='panasonic2')# grab videos in the panasonic folderfm.add('notes','notes*.txt')# grab all notesfm.add('notes','notes*.txt',include='notes\\notes')# grab notes from the notes folder# this will overwrite the previous notes entryfm.add('notes','notes*.txt',exclude=['sony','panasonic','panasonic2','canon'])# achieves the same result as the previous linefm.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)Retrieve file paths using a dict-like convention.fm['canon']# Retrieve by the tag 'canon'# Returns canon/40Camera.avi and canon/51Camera.avifm['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.avifm['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.mp4fm['notes?.txt']# Search for files using special chracters *, ?, !, [] specified in fnmatch# Returns notes/notes1.txt and notes/notes2.txtAdd 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.Retrieve all the added keys using fm.get_tags()fm.get_tags()# returns a list ['canon', 'sony42', 'videos', 'panasonic', 'notes']Retrieve paths of all the added files.fm.all_filesGet a report of the number of files, and the occupied space.fm.report()2 canon files taking up 0.000 MB1 sony42 files taking up 0.000 MB8 videos files taking up 0.000 MB2 panasonic files taking up 0.000 MB5 txt files taking up 0.000 MBLicenseDistributed under the MIT License. SeeLICENSEfor more information.ContactPraneeth NamburiProject Link:https://github.com/praneethnamburi/pyfilemanagerAcknowledgmentsThis tool was developed as part of the ImmersionToolbox initiative at theMIT.nano Immersion Lab. Thanks to NCSOFT for supporting this initiative.