Попробуйте это для вашего последнего цикла и дайте мне знать, как это получается, возможно, потребуется внести некоторые изменения, поскольку я не вижу ваши данные. Похоже, вы хотите запустить цикл for в списках вместе, поэтому попробуйте следующее:
for i, filename in zip(selectedRange, os.listdir(folderSource)):
file_name = str(i[1]) + " " + i[2] + ".jpg"
filename = os.path.join(folderSource, filename)
file_name = os.path.join(folderDestination, file_name)
shutil.copy(filename, file_name)
print(done)
go = renameFiles()
Для вложенных в циклические структуры учтите следующее:
loop1 = ['a','b','c','d','e']
loop2 = ['f','g','h','i','j']
for i in loop1: # iterates through a,b,c,d,e
print(i) #prints a,b,c,d,e
for j in loop2: # compares all j objects of loop2 to i in loop 1:
ij = i + j
print(ij) # this will add all j's to each i
вывод фрагмента будет добавлять все j к каждой итерации i, прежде чем перейти к следующей итерации i:
'af','ag','ah','ai','aj','bf','bg','bh','bi',bj'... etc
Объединение 2 списков вместе (что я и сделал в ответе) сравнивает каждый элемент в loop1 с loop2 с одинаковым индексом в обоих списках:
for i,j in zip(loop1,loop2):
ij = i + j
print(ij)
выход:
'af','bg','ch','di','ej'
Единственное, что вам нужно учитывать при использовании функции zip для двух списков, это то, что итерация будет происходить только до конца самого короткого списка. Таким образом, если loop1 и loop2 не были равны по длине, то i + j остановился бы после того, как более короткий список был завершен. Я надеюсь, что это проясняет некоторые из того, что я сделал.