Improve file-path finding method
import os, os.path
def getDirs(path):


Python convention is to use lowercase_with_underscores for function names

    sub = os.listdir(path)


Don't needlessly abbreviate, and at least have it be a plural name.

    paths = {}
    for p in sub:


You don't need to store things in a temporary variable to loop over them

        print p


Do you really want this function printing?

        pDir = '{}\{}'.format(path, p)


Use os.path.join to join paths. That'll make sure it works regardless of your platform.

        if os.path.isdir(pDir): 
            paths.update(getAllDirs(pDir, paths))


You shouldn't both pass it and update it afterwords. That's redundant.

        else:
            paths[p] = pDir
    return paths

def getAllDirs(mainPath, paths = {}):


Don't use mutable objects as default values, they have unexpected behavior.

    subPaths = os.listdir(mainPath)
    for path in subPaths:
        pathDir = '{}\{}'.format(mainPath, path)
        if os.path.isdir(pathDir):
            paths.update(getAllDirs(pathDir, paths))
        else:
            paths[path] = pathDir
    return paths


This whole section is repeated from the previous function. You should combine them.

Take a look at the os.walk function. It does most of the work you're doing here and you could use to simplify your code.