[英]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.