Python: вывод для рекурсивной распечатки файлов и папок

1

Я написал функцию python, которая рекурсивно выводит файлы и папки, но теперь я не уверен, как отображать ее в эстетическом стиле (в обычном тексте). Как вы отображаете структуры папок?

  • 0
    Сделайте отступ в каталогах и именах файлов, используя пробелы или все, что вы хотите ... в чем конкретная проблема? У вас кроме намека "сделать отступ красным или зеленым"?
  • 0
    Давай, ребята, немного оригинальности здесь. Я уверен, что есть больше, чем отступы, которые могут быть полезны. ОП ищет "эстетику", используйте свое воображение!
Теги:

2 ответа

5
Лучший ответ

Если вы напишете функцию, чтобы вернуть структуру каталогов в виде вложенного списка, например:

['DIR1/',['fileA','fileB','DIR3/',['fileE','fileF']],'DIR2/',['fileC','fileD']]

то вы можете использовать pprint.pformat для создания пассивного строкового представления:

import pprint
import textwrap
import re

data=['DIR1/',['fileA','fileB','DIR3/',['fileE','fileF']],'DIR2/',['fileC','fileD']]
print(textwrap.dedent(re.sub(r"[\]\[',]", r' ',
                             pprint.pformat(data,indent=4,width=1))))

дает

DIR1/  
    fileA  
    fileB  
    DIR3/  
        fileE  
        fileF    
DIR2/  
    fileC  
    fileD   

Примечание. В приведенном выше коде предполагается, что ваши имена файлов и каталогов не содержат никаких символов ,[]'...

  • 1
    вау, определенно ++. Я никогда не слышал о pformat раньше :)
  • 0
    как будет выглядеть эта функция? :)
2

Вы ищете текстовый дисплей командной строки или графический интерфейс?

Для отображения в командной строке просто используйте рекурсивную функцию, передающую переменную "отступ" к рекурсивным вызовам, увеличивая ее для каждого уровня:

toplevel/
   level2/
      file.txt
      file2.txt
   level2_again/
      file3.txt

Для графического интерфейса - используйте виджет, предоставляемый соответствующей структурой. Например, при PyQt есть виджет QTreeView.

  • 0
    Извините, это будет только текстовый вывод.
  • 0
    очевидно, что вам нужен отступ с отступом - в чем проблема ???

Ещё вопросы

Сообщество Overcoder
Наверх
Меню