2017-08-11 114 views
2

我有一个包含当前使用时间戳命名的图像的文件夹。我想重命名目录中的所有图像,以便将它们命名为'captured(x).jpg',其中x是目录中的图像编号。Python - 使用循环重命名目录中的所有文件

我一直在尝试实施不同的建议,建议在本网站和其他没有运气。这里是我的代码:

path = '/home/pi/images/' 
i = 0 
for filename in os.listdir(path): 
    os.rename(filename, 'captured'+str(i)+'.jpg' 
    i = i +1 

我不断收到一个错误,说“没有这样的文件或目录”os.rename行。

回答

1

os.listdir()返回的结果不包括路径。

path = '/home/pi/images/' 
i = 0 
for filename in os.listdir(path): 
    os.rename(os.path.join(path,filename), os.path.join(path,'captured'+str(i)+'.jpg')) 
    i = i +1 
0

rename()采用绝对路径的方法,你给它只是文件名因此它无法找到这些文件。

添加文件夹的目录中的文件名前获得的绝对路径

path = 'G:/ftest' 

i = 0 
for filename in os.listdir(path): 
    os.rename(path+'/'+filename, path+'/captured'+str(i)+'.jpg') 
    i = i +1 
0

两个建议:

  • 使用水珠。这使您可以更细致地控制文件名和目录以迭代。
  • 使用枚举的手工代替计数迭代

实施例:

import glob 
import os 

path = '/home/pi/images/' 
for i, filename in enumerate(glob.glob(path + '*.jpg')): 
    os.rename(filename, os.path.join(path, 'captured' + str(i) + '.jpg')) 
相关问题