Данный скрипт на Python обходит содержимое указанной директории, строит дерево файлов и папок в стиле ASCII, а затем выводит содержимое только файлов (игнорируя содержимое папок на втором этапе) в результирующий файл.
-
ASCII-дерево
Скрипт сначала выводит название корневой папки, а затем строит иерархическую структуру всех вложенных директорий и файлов. Для каждого уровня вложенности используется дополнительный отступ (4 пробела) и символы├──
и└──
. -
Разделители
После вывода ASCII-дерева выводится разделитель---
, который повторяется после каждого блока данных (то есть после структуры и после каждого файла). Это обеспечивает наглядное разделение между блоками. -
Подробный список файлов
- Каждому файлу присваивается свой индекс (например,
1.
,2.
, и т.д.). Если внутри папки несколько файлов, нумерация осуществляется в виде1.1
,1.2
и т.д. - Для текстовых файлов (определяются по расширениям из множества
TEXT_EXTENSIONS
) выводится блок вида:1. MD-file "README.md" <"README.md"> [Содержимое файла] </"README.md">
- Для файлов без расширения (например,
CNAME
) считается, что файл является текстовым, и он выводится аналогичным образом, с заголовкомTXT-file "CNAME"
. - Для нетекстовых файлов (из множества
OTHER_EXTENSIONS
) выводится только индекс и имя файла без содержимого, например:4. image.jpg
- Каждому файлу присваивается свой индекс (например,
-
Склонируйте репозиторий или загрузите файл
print_folder_content.py
. -
Установите переменную
my_folder_path
в путь к папке, которую вы хотите просмотреть. -
Установите переменную
my_output_file
в путь к файлу, куда вы хотите сохранить результат. -
Запустите скрипт:
python print_folder_content.py
Допустим, у нас есть папка my_folder
со следующей структурой:
my_folder/
├── .gitignore
├── README.md
├── CNAME
├── script.py
├── src
│ └── index.html
└── image.jpg
После запуска скрипта в результирующем файле вы увидите примерно следующее:
my_folder/
├── .gitignore
├── README.md
├── CNAME
├── script.py
├── src
└── index.html
└── image.jpg
--- # Разделитель после структуры
1. .GITIGNORE-file ".gitignore"
<".gitignore">
# Содержимое файла .gitignore
</".gitignore">
--- # Разделитель после блока файла
2. MD-file "README.md"
<"README.md">
# Заголовок из README
[продолжение содержимого...]
</"README.md">
--- # Разделитель
3. TXT-file "CNAME"
<"CNAME">
[Содержимое файла CNAME]
</"CNAME">
--- # Разделитель
4. PY-file "script.py"
<"script.py">
print("Hello, world!")
</"script.py">
--- # Разделитель
5. HTML-file "index.html"
<"index.html">
<html>
<body>...</body>
</html>
</"index.html">
--- # Разделитель
6. image.jpg
--- # Разделитель после последнего блока
Обратите внимание, что содержимое файлов .gitignore
, README.md
, CNAME
, script.py
и index.html
выводится «внутри» соответствующих тегов. Файл image.jpg
, относящийся к нетекстовому формату, выводится без содержимого.
В начале скрипта определены множества:
TEXT_EXTENSIONS = {".txt", ".html", ".js", ".css", ".py", ".json", ".gitignore", ".md"}
OTHER_EXTENSIONS = {".jpg", ".jpeg", ".png", ".gif", ".bmp", ".zip", ".rar", ".tar", ".gz", ".7z"}
- Если расширение файла входит в
TEXT_EXTENSIONS
, его содержимое будет прочитано и выведено. - Если расширение файла входит в
OTHER_EXTENSIONS
, выводится только имя файла. - Файлы без расширения также выводятся, предполагая, что они являются текстовыми.
- Папки (тип
folder
) на втором этапе не выводятся – они отображаются только в ASCII-дереве.
Этот проект распространяется по выбранной вами лицензии (MIT, GPL и т.п.). Вы можете свободно изменять и распространять данный скрипт.