Получить все файлы в соответствующем имени подкаталога

У меня есть этот фрагмент кода из другого проекта:

import pathlib
p = pathlib.Path(root)
for img_file in p.rglob("*.jpg"):
    #Do something for each image file

Он находит все файлы jpg во всем каталоге и его подпапках и воздействует на них.

У меня есть каталог, содержащий более 100 «основных» папок, каждая из которых имеет комбинацию из 2 подпапок - позвольте называть их «FolderA» и «FolderB». В основных папках может быть одна, обе или ни одна из этих вложенных папок.

Я хочу запустить фрагмент кода для всех файлов PDF, содержащихся в подкаталогах «FolderB», но игнорировать все файлы в основных папках и папках «FolderA».

Может ли кто-нибудь помочь мне изменить приведенный выше код, чтобы продолжить?

Большое спасибо!

Можете ли вы сами продемонстрировать усилия любой в решении этой проблемы?

Scott Hunter 01.05.2018 12:40

Я уверен, что могу: я нашел библиотеки, относящиеся к моей проблеме. Я нашел фрагмент кода, который помогает мне найти ответ (см. Выше). Я указал ту часть, над которой я борюсь (только возвращаемые файлы, которые соответствуют желаемой папке). Я искал в Google и stackoverflow разными способами задать вопрос (моя проблема в том, что я новичок и часто не знаю названия концепций, которые ищу). Может быть, ты сможешь направить меня к концепции, которую я мог бы прочитать и найти для себя ответ?

Peter Connolly 01.05.2018 13:33

Вы смотрели на ценности, которые возвращаете от p.rglob?

Scott Hunter 01.05.2018 13:55

Возвращаемые значения соответствуют каждому файлу, соответствующему ".jpg" в конце строки пути. Но как мне попытаться указать кусок текста, т.е. "FolderB", который встречается в середина пути и затем возвращает эти файлы? Строка-заполнитель «FolderB», которую я использовал в этом случае, может быть в имени файла, содержащегося в «FolderA». Таким образом, предыдущие попытки просто изменить ".jpg" на "FolderB" вернули несколько неверных файлов. (извините, звездочки, похоже, испортили форматирование комментария! у меня есть один перед .jpg, а также до и после FolderB) @ScottHunter

Peter Connolly 01.05.2018 14:05

Если значения содержат путь к каждому файлу, вы можете определить, в какой папке находится каждый из них, и действовать соответствующим образом.

Scott Hunter 02.05.2018 01:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
76
1

Ответы 1

Вы можете изменить шаблон, чтобы просто искать то, что вам нужно:

from pathlib import Path

p = Path("root")
for file in p.rglob("*FolderB/*.pdf"):
    # Do something with file
    pass

Другие вопросы по теме