从另一个列表中重命名Python中的多个文件

时间:2019-01-18 01:59:12

标签: python-3.x

我正在尝试从另一个列表重命名多个文件。就像从列表['_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,其余部分未更改。

2 个答案:

答案 0 :(得分:0)

您要针对第一个文件进行总列表循环。您必须在单个for循环中同时输入listfilename

这可以使用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;找不到它!