Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 5, 2013 14:55:31

young_programmer
Зарегистрирован: 2013-08-22
Сообщения: 32
Репутация: +  -2  -
Профиль   Отправить e-mail  

Визуализация данных

Есть папка содержащая в свою очередь подпапки. Мне нужно считать названия всех папок и отобразить их структуру (какая папка где лежит). Все данные легко получаются с помощью os.walk, но проблема в том, как эти данные отобразить. В виде приятным для пользователя и желательно.



Linux - это такая фэнтезийная MMORPG: эльфы в файлах, гномы на столах,
зомби в процессах, демоны в фоне, а на форумах сплошь тролли да красноглазые орки.

Отредактировано young_programmer (Ноя. 5, 2013 14:56:31)

Офлайн

#2 Ноя. 5, 2013 16:13:20

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Визуализация данных

если в консольном режиме, то можно повторить утилиту tree



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#3 Ноя. 5, 2013 16:59:14

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Визуализация данных

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 придется до установить, а для венды его вроде нет

Офлайн

#4 Ноя. 5, 2013 17:17:42

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Визуализация данных

Вопрос в разделе для экспертов :)

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)

Офлайн

#5 Ноя. 5, 2013 18:54:07

young_programmer
Зарегистрирован: 2013-08-22
Сообщения: 32
Репутация: +  -2  -
Профиль   Отправить e-mail  

Визуализация данных

Budulianin
Вопрос в разделе для экспертов
Да я ошибся разделом, замачиваться перемещением не стал.
Спасибо за помощь.



Linux - это такая фэнтезийная MMORPG: эльфы в файлах, гномы на столах,
зомби в процессах, демоны в фоне, а на форумах сплошь тролли да красноглазые орки.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version