我正在尝试从另一个列表重命名多个文件。就像从列表['_1','_ 2']中将test.wav重命名为test_1.wav一样。
import os
list_2 = ['_1','_2']
path = '/Users/file_process/new_test/'
file_name = os.listdir(path)
for name in file_name:
for ele in list_2:
new_name = name.replace('.wav',ele+'.wav')
os.renames(os.path.join(path,name),os.path.join(path,new_name))
但结果是错误显示“ FileNotFoundError:[Errno 2]没有这样的文件或目录:/Users/file_process/new_test/test.wav-> /Users/file_process/new_test/test_2.wav
但是,该文件夹中的第一个文件已更改为test_1.wav,其余部分未更改。
答案 0 :(得分:0)
您要针对第一个文件进行总列表循环。您必须在单个for循环中同时输入list
和filename
。
这可以使用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))
答案 1 :(得分:0)
您的算法有误。
您的算法首先通过外部循环(for name in file_name
),然后在内部循环中,将文件test.wav
替换为test_1.wav
。在此步骤中,没有名为test.wav
的文件(该文件已被替换为test_1.wav
);但是,您的算法仍然尝试将名为test.wav
的文件重命名为test_2.wav
;找不到它!