繁体   English   中英

如何根据列表重命名文件夹中的文件?

[英]How to rename files in a folder based on a list?

我有一个包含大约 30 张图像的文件夹,这些图像保存为“0001”、“0002”等......等等,我有一个文件名,我想在列表中重命名它们。 我已经编写了一些代码,但目前出现错误

FileNotFoundError: [WinError 2] 系统找不到指定的文件:'0001.jpg' -> 'Filename1'


 import os

directory = os.fsencode('Folder')
new_filenames = ['Filename1','Filename2'.....]
    
for index, file in enumerate(os.listdir(directory)):
     old_filename = os.fsdecode(file)
      os.rename(old_filename, new_filenames[index]) 

我从这里去哪里?

你可以试试这个:

import os

directory = os.fsencode('Folder')
new_filenames = ['Filename1.jpg','Filename2.jpg'.....]
    
for index, file in enumerate(os.listdir(directory)):
    old_filename = os.fsdecode(file)
    os.rename(old_filename, new_filenames[index]) 

最好使用glob

如果THE_NAME_OF_THE_FOLDER_TO_COPY_FROM已经在您的工作目录中或提供图像文件夹的完整路径,则将其替换为文件夹名称。

import glob

path= "THE_NAME_OF_THE_FOLDER_TO_COPY_FROM"
images = glob.glob(path + "*.jpg")
print(images)

这是我刚刚测试过的 Windows 10 上的示例路径。

 path = "C:/Users/ghaith/Desktop/test/"

如果你打印它们,你会看到你得到一个包含每个图像名称的列表,比如[FOLDER_NAME/IMAGE_NAME.png, ....]

然后,利用这个列表遍历所有图像并分别用replace更改它们的名称。

因此,据我所知,您想重命名并删除每张图像中的000 ,对吗?

for index, img in enumerate(images):
    os.rename(img, img.replace('000', '')) 

或者您可以使用一行列表理解来编写它。

[os.rename(img, img.replace('000', '')) for img in images] 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM