Цикл через папку python

Обычно в моем каталоге есть 4 подпапки, и они представлены в виде массива со следующей структурой:

path_list = [path1, path2, path3, path4]

Когда я запускаю этот код, я могу сканировать все файлы в одной из папок.

for file_name in os.listdir(path_list[2]): 
    full_path = os.path.join(path_list[2], file_name)
    ...
    new_sub = os.path.join(new_path, subdir_list[2])
    final_path = os.path.join(new_sub, file_name)
    imsave(final_path, img_norm)

Я хотел бы найти способ для цикла сканировать папку, и после его завершения в i++ и path_list[i] возникла ошибка subdir_list[i], которая могла изменить значение пути. Цикл должен остановиться, когда он просканирует и изменит все файлы в 4 папках.

Исправьте отступ в своем вопросе.

Michael Butscher 10.10.2018 21:41
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете обернуть все это в цикл for.

path_list = [path1, path2, path3]
subdir_list = [subdir1, subdir2, subdir3]
for i, _path in enumerate(path_list):
    for file_name in os.listdir(_path): 
        full_path = os.path.join(_path, file_name)
        ...
        new_sub = os.path.join(new_path, subdir_list[i])
        final_path = os.path.join(new_sub, file_name)
        imsave(final_path, img_norm)

Спасибо, но когда я запускаю сценарий, я получаю следующую ошибку, возможно, из-за «for i»: [Errno 13] Permission denied:

Israel Motta 10.10.2018 21:57

Если я оставлю только следующую часть: «для _path в enumerate (path_list): для имени_файла в os.listdir (_path):» я получаю эту ошибку: TypeError: listdir: путь должен быть строкой, байтами, os.PathLike или None, не кортеж

Israel Motta 10.10.2018 22:00
enumerate() возвращает кортеж; поэтому код должен быть for i, _path in enumerate(path_list). Ошибка отказа в разрешении возникает из-за того, что ваша операционная система не позволяет вам выполнять любые манипуляции с файлами, которые вы хотите сделать.
CJR 10.10.2018 22:04

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