По касательной к паре ответов я могу предположить, что вместо того, чтобы писать что-то вроде:
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 не требуется для большинства реализаций равных, но если вы действительно были настолько универсальны, чтобы это делать это на объектах, как в приведенном выше примере, вы, конечно, не знаете, как было написано каждое переопределение.
Вы зацикливаетесь на первом файле с общим списком. Вы должны ввести оба 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))
У вас есть ошибка в вашем алгоритме.
Ваш алгоритм сначала проходит через внешний цикл (for name in file_name
), а затем во внутреннем цикле вы заменяете файл test.wav
на test_1.wav
. На этом этапе нет файла с именем test.wav
(он уже был заменен как test_1.wav
); однако ваш алгоритм все еще пытается переименовать файл с именем test.wav
в test_2.wav
; и не могу его найти, конечно!