import os from glob import glob directories = glob("*/") directory_map = { "@celle2": "1088396647", "@isladuala_a3": "1088396647", "@Jbad": "1088396647", "@lingor_a3": "1088396647", "@LYTHIUM": "1088396647", "@Napf Island A3": "1088396647", "@Schwemlitz": "1088396647", "@Thirsk": "1088396647", "@Bozcaada": "1088396647", "@abramia": "1088396647", "@3cb_baf_equipment": "893328083", "@3cb_baf_units": "893346105", "@3cb_baf_vehicles": "893349825", "@3cb_baf_weapons": "893339590", "@ace": "1088349154", "@ALiVE": "620260972", "@AresModAchiliesExpansion": "723217262", "@CBA": "450814997", "@CUP_Terrains_Core": "583496184", "@CUP_Terrains_CWA": "853743366", "@CUP_Terrains_Maps": "583544987", "@RHSAFRF": "843425103", "@RHSGREF": "843593391", "@RHSUSAF": "843577117", "@ShackTac User Interface": "", "@TFR": "620019431", "@Werthles' Headless Module": "510031102", "@burnes_challenger": "1088392903", "@BWMod": "1088392903", "": "1088392903", "@Cha_Lav25": "1088392903", "@EWK_HMMWV": "1088392903", "@FV510 Warrior": "1088392903", "@Hover Board": "1088392903", "@K_MNP": "1088392903", "@NIArsenal": "1088392903", "@NIArsenal_ACR": "1088392903", "@Project OPFOR": "1088392903", "@tf47_launchers": "1088392903", "@TacticalBeards": "1088392903", "@US Military Mod": "1088392903", "@Advanced_Rappeling": "1088392903", "@Advanced_Towing": "1088392903", "@BackpackOnChest": "1088392903" } def movetree(src, dst, symlinks=False, ignore=None): names = os.listdir(src) if ignore is not None: ignored_names = ignore(src, names) else: ignored_names = set() try: os.makedirs(dst) except OSError as exc: # XXX - this is pretty ugly if "file already exists" in exc.strerror: # Windows pass elif "File exists" in exc.strerror: # Linux pass else: raise for name in names: if name in ignored_names: continue src_name = os.path.join(src, name) dst_name = os.path.join(dst, name) if os.path.isfile(dst_name): os.remove(src_name) continue try: if symlinks and os.path.islink(src_name): link_to = os.readlink(src_name) os.symlink(link_to, dst_name) os.remove(src_name) elif os.path.isdir(src_name): movetree(src_name, dst_name, symlinks, ignore) else: os.rename(src_name, dst_name) except (IOError, os.error) as why: print(src, dst, str(why)) os.rmdir(src) for directory in directories: dir_name = directory[:-1] if directory_map.get(dir_name): movetree(directory, directory_map.get(dir_name))