«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как рекурсивно читать содержимое папки в Python с помощью функции os.walk()?

Как рекурсивно читать содержимое папки в Python с помощью функции os.walk()?

Опубликовано 8 ноября 2024 г.
Просматривать:608

How to Recursively Read Folder Contents in Python Using the os.walk() Function?

Рекурсивное чтение содержимого папки в Python

В Python вы можете столкнуться с проблемами при попытке рекурсивного перемещения по каталогам для чтения текстовых файлов. Распространенной проблемой является код, который работает только для одного уровня каталога.

Понимание функции os.walk

Ядро рекурсивного обхода папок в Python лежит в os. .walk() функция. Он перебирает указанный каталог и его подкаталоги, возвращая три значения: корень, подкаталоги и файлы.

  • root : текущий обрабатываемый каталог.
  • subdirs : каталоги внутри текущего каталог.
  • files : файлы (не каталоги) в текущем каталоге.

Оптимизация обхода папок

Для рекурсивного перемещения по каталогам вы должен перебирать список подкаталогов, возвращаемый os.walk(). Затем для каждого подкаталога вы можете рекурсивно вызвать os.walk() для обработки его содержимого.

Улучшенный код Python

Пример кода можно изменить для обработки нескольких каталогов уровни:

import os
import sys

walk_dir = sys.argv[1]

for root, subdirs, files in os.walk(walk_dir):
    for subdir in subdirs:
        # Process subdirectory: call os.walk() recursively for subdir
        for sub_subdir, sub_subfiles, _ in os.walk(os.path.join(root, subdir)):
            # Process subdirectories and files in subdirectory

Дополнительные рекомендации

  • Используйте os.path.join() для объединения путей вместо манипулирования строками вручную.
  • Рассмотрите возможность преобразования аргументов сценария в абсолютные пути с помощью os.path.abspath() для обеспечения стабильности.
  • Используйте оператор with, чтобы упростить обработку файлов и обеспечить автоматическую очистку.
Заявление о выпуске Эта статья перепечатана по адресу: 1729233616. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3