FileMatch

A function to check all files in a folder against a given pattern.
Uses RegEx for the file pattern.
Returns “true” or “false” for each file.
Usage: FileMatch(“/path/to/folder”, “[a-z0-9]\.exe”, [bool], [bool])
Attributes: Folder path, pattern, recurse, display result

# Import the basics
import io
import os
import re


# r=True will recursively search sub folders as well
# v=True will print the results of the search
def FileMatch(aFolder, aPattern, r=False, v=False):
    validArgs = True
    if not os.path.isdir(aFolder):
        if v: print(aFolder, "is not a valid directory")
        validArgs = False
    try:
        cPattern = re.compile(aPattern)
    except Exception as e:
        if v: print(e)
        validArgs = False
    if validArgs:
        if v: print("Checking:", aFolder)
        passed = []
        failed = []
        for item in os.listdir(aFolder):
            currPath = os.path.join(aFolder,item)
            currFile = {}
            if os.path.isdir(currPath) and r==True:
                thing1, thing2 = checkFolder(currPath,r)
                passed.extend(thing1)
                failed.extend(thing2)
            elif os.path.isfile(currPath) and cPattern.match(item):
                if r:
                    ritem = os.path.join(aFolder,item)
                    if v: print("Passed:", ritem)
                    passed.append(ritem)
                else:
                    if v: print("Passed:", item)
                    passed.append(item)
            elif os.path.isfile(currPath) and not cPattern.match(item):
                if r:
                    ritem = os.path.join(aFolder,item)
                    if v: print("Failed:", ritem)
                    failed.append(ritem)
                else:
                    if v: print("Failed:", item)
                    failed.append(item)
            else:
                if v: print(item, "is neither a file nor a folder")
        return passed, failed
    else:
        return False