Обычно в моем каталоге есть 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 папках.
Вы можете обернуть все это в цикл 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:
Если я оставлю только следующую часть: «для _path в enumerate (path_list): для имени_файла в os.listdir (_path):» я получаю эту ошибку: TypeError: listdir: путь должен быть строкой, байтами, os.PathLike или None, не кортеж
enumerate()
возвращает кортеж; поэтому код должен быть for i, _path in enumerate(path_list)
. Ошибка отказа в разрешении возникает из-за того, что ваша операционная система не позволяет вам выполнять любые манипуляции с файлами, которые вы хотите сделать.
Исправьте отступ в своем вопросе.