Как переименовать несколько файлов в папках, следуя порядку списка - PullRequest
1 голос
/ 04 мая 2019

У меня есть несколько папок, которые содержат много файлов:

Folder
|---Folder1
|      |------File1, File2,...
|
|---Folder2
       |------File3, File4,...

У меня тоже есть my_list = [rename1, rename2, rename3, rename4]

Я пытаюсь переименовать [File1, File2, File3, File4], чтобы точно следовать порядку и именам my_list.

Я пробовал это:

list_of_dirs = [path_to_file1, path_to_file2, path_to_file3, path_to_file4]
my_list = [rename1, rename2, rename3, rename4]
for i in list_of_dirs:
    os.rename(i, 'path_to_saving_directory' + str(j for j in my_list))

, но это создает объект генератора и содержит файлы, которые не соответствуют [rename1, rename2, rename3, rename4], как требуется.

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Вы пытаетесь перебрать два списка.

Ниже приведен довольно стандартный шаблон.Вместо print вы можете использовать os.rename, чтобы переименовывать файлы.

>>> list_of_paths = ['path1', 'path2', 'path3', 'path4']
>>> new_names = ['rename1', 'rename2', 'rename3', 'rename4']
>>> 
>>> 
>>> for original_path, new_name in zip(list_of_paths, new_names):
...   print(f"need to rename file at {original_path} to {new_name}")
... 
need to rename file at path1 to rename1
need to rename file at path2 to rename2
need to rename file at path3 to rename3
need to rename file at path4 to rename4
>>> 

0 голосов
/ 04 мая 2019

Вы можете использовать встроенную функцию.

for i, j in zip(list_of_dirs, my_list):
    os.rename(i, j)
...