Переименовать несколько файлов в Python из другого списка

По касательной к паре ответов я могу предположить, что вместо того, чтобы писать что-то вроде:

boolean compare(Object o1, Object o2)
{
  if (o1==null)
    return o2==null;
  if (o2==null)
    return false;
  return o1.equals(o2);
}

Это гораздо более кратким, и я считаю немного более эффективным, чтобы написать:

boolean compare(Object o1, Object o2)
{
  return o1==o2 || o1!=null && o2!=null && o1.equals(o2);
}

Если оба значения равны нулю, o1 == o2 вернет true. Если они не те, но они - один и тот же объект, это тоже хорошо.

Технически o2! = Null не требуется для большинства реализаций равных, но если вы действительно были настолько универсальны, чтобы это делать это на объектах, как в приведенном выше примере, вы, конечно, не знаете, как было написано каждое переопределение.

0
задан Hawkmoon 18 January 2019 в 01:59
поделиться

2 ответа

Вы зацикливаетесь на первом файле с общим списком. Вы должны ввести оба list и filename в один цикл for.

Это можно сделать с помощью функции zip(file_name, list_2).

Это переименует файл с добавлением того, что отправлено через список. Нам просто нужно убедиться, что список и количество файлов всегда равны.

Код:

import os
list_2 = ['_1','_2']
path = '/Users/file_process/new_test/'
file_name = os.listdir(path)

for name, ele in zip(file_name, list_2):
    new_name = name.replace(name , name[:-4] + ele+'.wav')
    print(new_name)
    os.renames(os.path.join(path,name),os.path.join(path,new_name))
0
ответ дан Naveen 18 January 2019 в 01:59
поделиться

У вас есть ошибка в вашем алгоритме.

Ваш алгоритм сначала проходит через внешний цикл (for name in file_name), а затем во внутреннем цикле вы заменяете файл test.wav на test_1.wav. На этом этапе нет файла с именем test.wav (он уже был заменен как test_1.wav); однако ваш алгоритм все еще пытается переименовать файл с именем test.wav в test_2.wav; и не могу его найти, конечно!

0
ответ дан ssd 18 January 2019 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: