Python, Scripting

String To Folder


This tiny python script generates folder from a given string (template). ns_StringToFolder.py

import os

out = "/Users/Nschlapmann/Documents/Python/Test"
out = out.replace("/", os.sep)
out = out.replace("\\", os.sep)

template = '''
-_History
-1.3D
--Softimage
---Scripts
---Textures
--C4D
--Tmp
-2.2D
--Nuke
---Scripts
----Tmp
---Out
--AE
---Scripts
---Out
--Photoshop
-3.Dispo
--In
--Out
--Tmp
-4.Work
--Render
--Tmp
'''

folderArray = template.split("\n")
dataList = []

def checkSeperator(folder, startPos, endPos):
    if folder[startPos:endPos]=="-":
        return True
    else:
        return False

def checkStringRecursion(folder, level):
    folderLevel=level
    if checkSeperator(folder, 0+folderLevel, 1+folderLevel): 
        folderLevel += 1
        checkStringRecursion(folder, folderLevel)
    else:
        if folderLevel>0:
            dataList.append([folderLevel, folder[folderLevel:len(folder)]])

def buildPathes():
    check = False
    i=0
    lowest_depth=0
    for items in dataList:
        depth = items[0]
        name = items[1]
        if lowest_depth>=depth:
            lowest_depth = items[0]
            lowest_name = items[1]

        
        if check:
            if depth>depth_before:
                dataList[i][1]=name_before+os.sep+dataList[i][1]
            else:
                tmp_name=lowest_name
                for ii in range (lowest_depth, i):
                    if dataList[ii][0]<depth:
                        tmp_name = dataList[ii][1]

                if tmp_name!="":
                    if tmp_name!=dataList[i][1]:
                        dataList[i][1]=tmp_name+os.sep+dataList[i][1]

        else:
            check = True
            lowest_depth=items[0]
            lowest_name=items[1]
        
        depth_before = items[0]
        name_before = items[1]
        i=i+1

    ii=0
    for items in dataList:
        dataList[ii]=out+os.sep+items[1]
        ii=ii+1            

def writeFolder():
    for items in dataList:
        try:
            os.mkdir(items)
        except:
            pass

def main():
    if os.path.exists(out):
        for folder in folderArray:
            checkStringRecursion(folder, 0)
        buildPathes()
        writeFolder()
        print ("Folder created!")
    else:
        print ("Path dont exist!")
    
if  __name__ =='__main__':main()

The result:

ns_stringtofolder