Найти - Пользователи
Полная версия: Визуализация данных
Начало » Python для экспертов » Визуализация данных
1
young_programmer
Есть папка содержащая в свою очередь подпапки. Мне нужно считать названия всех папок и отобразить их структуру (какая папка где лежит). Все данные легко получаются с помощью os.walk, но проблема в том, как эти данные отобразить. В виде приятным для пользователя и желательно.
Master_Sergius
если в консольном режиме, то можно повторить утилиту tree
Singularity
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
возможно tree придется до установить, а для венды его вроде нет
Budulianin
Вопрос в разделе для экспертов :)

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

А вообще, тут всё что угодно придумать можно, на что фантазии хватит. Можно в консоль, можно в тегах, можно что-нибудь графическое.
young_programmer
Budulianin
Вопрос в разделе для экспертов
Да я ошибся разделом, замачиваться перемещением не стал.
Спасибо за помощь.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB