Форум сайта python.su
Есть папка содержащая в свою очередь подпапки. Мне нужно считать названия всех папок и отобразить их структуру (какая папка где лежит). Все данные легко получаются с помощью os.walk, но проблема в том, как эти данные отобразить. В виде приятным для пользователя и желательно.
Отредактировано young_programmer (Ноя. 5, 2013 14:56:31)
Офлайн
если в консольном режиме, то можно повторить утилиту tree
Офлайн
young_programmer
>tree . ├── pulse-PKdhtXMmr18n [error opening dir] ├── qtsingleapp-homeih-482a-3e8 ├── qtsingleapp-homeih-482a-3e8-lockfile ├── qtsingleapp-qBitto-1809-3e8 ├── qtsingleapp-qBitto-1809-3e8-lockfile ├── sni-qt_qbittorrent_5204-13OA45 │ └── icons ├── sni-qt_skype_3769-sH29nT │ └── icons └── ssh-NRtcNVaeKyra └── agent.1235 6 directories, 5 files
Офлайн
Вопрос в разделе для экспертов :)
young_programmerНету таких. Есть директории.
Есть папка содержащая в свою очередь подпапки.
import sys, os FILES = False def main(): if len(sys.argv) > 2 and sys.argv[2].upper() == '/F': global FILES; FILES = True try: tree(sys.argv[1]) except: print('Usage: {} <directory>'.format(os.path.basename(sys.argv[0]))) def tree(path): path = os.path.abspath(path) dirs, files = listdir(path)[:2] print(path) walk(path, dirs, files) if not dirs: print('No subfolders exist') def walk(root, dirs, files, prefix=''): if FILES and files: file_prefix = prefix + ('|' if dirs else ' ') + ' ' for name in files: print(file_prefix + name) print(file_prefix) dir_prefix, walk_prefix = prefix + '+---', prefix + '| ' for pos, neg, name in enumerate2(dirs): if neg == -1: dir_prefix, walk_prefix = prefix + '\\---', prefix + ' ' print(dir_prefix + name) path = os.path.join(root, name) try: dirs, files = listdir(path)[:2] except: pass else: walk(path, dirs, files, walk_prefix) def listdir(path): dirs, files, links = [], [], [] for name in os.listdir(path): path_name = os.path.join(path, name) if os.path.isdir(path_name): dirs.append(name) elif os.path.isfile(path_name): files.append(name) elif os.path.islink(path_name): links.append(name) return dirs, files, links def enumerate2(sequence): length = len(sequence) for count, value in enumerate(sequence): yield count, count - length, value if __name__ == '__main__': main()
C:\git\marcus +---.git | +---hooks | +---info | +---logs | | \---refs | | +---heads | | \---remotes | | +---origin | | \---upstream | +---objects | | +---54 | | +---b6 | | +---e2 | | +---info | | \---pack | \---refs | +---heads | +---remotes | | +---origin | | \---upstream | \---tags +---docs | \---screenshots | \---thumbnails \---marcus +---locale | \---ru | \---LC_MESSAGES +---management | \---commands +---migrations +---static | +---highlight.js | | \---styles | +---images | | \---flags | \---marcus | \---sets | \---markdown | \---images +---templates | +---flatpages | \---marcus | +---blocks | +---emails | \---feeds +---templatetags \---wordpress_importer
Отредактировано Budulianin (Ноя. 5, 2013 17:21:18)
Офлайн
BudulianinДа я ошибся разделом, замачиваться перемещением не стал.
Вопрос в разделе для экспертов
Офлайн