robim akurat jeden projekt do skoly, kde mam vypisat zlozky a subory pod seba s nejakou medzerou, ktora sa udava podla hlbky. Robim to cez rekurziu, kde posiela do funkcie cislo hlbky a to hodim do formatu. Problem je ten, ze u suborov ignoruje ten formal align (zlozky idu v pohode).
Zdrojak:
Kód: Vybrať všetko
def print_struct(strom):
def vypis(pole, n):
for subor in pole:
if (type(subor) == str) and (pole[0] == subor): #prva hodnota listu je zlozka
form = '{:>'+str(n*4)+'}'
print(form.format(subor))
elif (type(subor) == str): #ak ostatne su stringy su to subory
form = '{:>'+str((n+1)*4)+'}' #<<<PROBLEM
print(form.format(subor)) #
else: vypis(subor, n+1) #ak je to podzlozka vstup do nej
vypis(strom, 0)
strom = ['cache', ['ADB', 'Hotfix.tbl', ['enUS', 'BattlePetAbility.adb', 'BattlePetAbilityEffect.adb', 'BattlePetAbilityState.adb', 'BattlePetAbilityTurn.adb', 'BattlePetBreedQuality.adb', 'BattlePetBreedState.adb', 'BattlePetEffectProperties.adb', 'BattlePetNPCTeamMember.adb', 'BattlePetSpecies.adb', 'BattlePetSpeciesState.adb', 'BattlePetSpeciesXAbility.adb', 'BattlePetState.adb', 'BattlePetVisual.adb', 'BroadcastText.adb', 'Creature.adb', 'GameObjects.adb', 'Item-sparse.adb', 'Item.adb', 'ItemCurrencyCost.adb', 'ItemExtendedCost.adb', 'KeyChain.adb', 'Locale.adb', 'Location.adb', 'MapChallengeMode.adb', 'MarketingPromotionsXLocale.adb', 'Path.adb', 'PathNode.adb', 'PathNodeProperty.adb', 'PathProperty.adb', 'QuestPackageItem.adb', 'SceneScript.adb', 'SceneScriptPackage.adb', 'SceneScriptPackageMember.adb']], ['WDB', ['enUS', 'creaturecache.wdb', 'gameobjectcache.wdb', 'itemtextcache.wdb', 'npccache.wdb', 'pagetextcache.wdb', 'questcache.wdb', 'wowcache.wdb']]]
print_struct(strom)
Zaciatok listu je zlozka (aj pri vnorenych listov). Ostatne indexy listu su bud zlozky (vnorene listy), alebo subory (cisty string)
Dufam, ze mi date nejaku radu, ako zaistit, aby ten align fungoval aj pri suboroch (najlepsie cez ten .format).
Dakujem.