使用文件夹名称重命名文件夹中的所有图像
renaming all images in folders using the name of the folder
我有很多文件夹。在每个文件夹中,都有一个图像。我想用文件夹的名称重命名所有图像。
例如:
文件夹“1”有一张图片“273.jpg”,我想将其更改为“1.jpg”并将其保存在另一个目录中。
这是我到目前为止所做的:
import os
import pathlib
root = "Q:/1_Projekte/2980/"
for path, subdirs, files in os.walk(root):
for name in files:
print (pathlib.PurePath(path, name))
os.rename(os.path.join(path, name), os.path.join(path, os.path.basename(path)))
print(os.path.basename(path))
问题是它只对第一个文件夹有效,然后跳出错误:
this file is already available...
文件夹树和图片是这样的:
Q:/1_Projekte/2980/1/43425.jpg
Q:/1_Projekte/2980/2/43465.jpg
Q:/1_Projekte/2980/3/43483.jpg
Q:/1_Projekte/2980/4/43499.jpg
所以每个目录下只有一个文件!
可能您在这些目录中有一些隐藏文件。看看这个。如果这些文件不是 jpg
,您可以使用以下代码:
for path, subdirs, files in os.walk(root):
for name in files:
extension = name.split(".")[-1].lower()
if extension != "jpg":
continue
os.rename(os.path.join(path, name), os.path.join(path, os.path.basename(path) + "." + extension))
print(os.path.basename(path))
此代码提取文件的扩展名并检查它是否等于 jpg
。如果文件扩展名不是 jpg
,则继续语句将 运行 并检查下一个文件。如果文件类型是 jpg
,脚本会重命名它。此代码还将原始文件扩展名添加到新名称。以前的代码没有处理那个。
希望对你有所帮助。
也许这会有所帮助...
import os
root = "Q:/1_Projekte/2980/"
subdirs = [x for x in os.listdir(root) if os.path.isdir(x)]
for dir_name in subdirs:
dir_path = root + dir_name + '/'
files = os.listdir(dir_path)
print(dir_name)
print(files)
for i in files:
counter = 1
extension = i.split('.')[-1]
new_name = dir_name + '.' + extension
while True:
try:
os.rename(dir_path + i, dir_path + new_name)
break
except:
# If the file exists...
new_name = dir_name + '({})'.format(counter) + '.' + extension
counter += 1
此代码确保即使碰巧存在具有现有名称的文件,它也会在括号中加上数字后缀。
我有很多文件夹。在每个文件夹中,都有一个图像。我想用文件夹的名称重命名所有图像。
例如: 文件夹“1”有一张图片“273.jpg”,我想将其更改为“1.jpg”并将其保存在另一个目录中。
这是我到目前为止所做的:
import os
import pathlib
root = "Q:/1_Projekte/2980/"
for path, subdirs, files in os.walk(root):
for name in files:
print (pathlib.PurePath(path, name))
os.rename(os.path.join(path, name), os.path.join(path, os.path.basename(path)))
print(os.path.basename(path))
问题是它只对第一个文件夹有效,然后跳出错误:
this file is already available...
文件夹树和图片是这样的:
Q:/1_Projekte/2980/1/43425.jpg
Q:/1_Projekte/2980/2/43465.jpg
Q:/1_Projekte/2980/3/43483.jpg
Q:/1_Projekte/2980/4/43499.jpg
所以每个目录下只有一个文件!
可能您在这些目录中有一些隐藏文件。看看这个。如果这些文件不是 jpg
,您可以使用以下代码:
for path, subdirs, files in os.walk(root):
for name in files:
extension = name.split(".")[-1].lower()
if extension != "jpg":
continue
os.rename(os.path.join(path, name), os.path.join(path, os.path.basename(path) + "." + extension))
print(os.path.basename(path))
此代码提取文件的扩展名并检查它是否等于 jpg
。如果文件扩展名不是 jpg
,则继续语句将 运行 并检查下一个文件。如果文件类型是 jpg
,脚本会重命名它。此代码还将原始文件扩展名添加到新名称。以前的代码没有处理那个。
希望对你有所帮助。
也许这会有所帮助...
import os
root = "Q:/1_Projekte/2980/"
subdirs = [x for x in os.listdir(root) if os.path.isdir(x)]
for dir_name in subdirs:
dir_path = root + dir_name + '/'
files = os.listdir(dir_path)
print(dir_name)
print(files)
for i in files:
counter = 1
extension = i.split('.')[-1]
new_name = dir_name + '.' + extension
while True:
try:
os.rename(dir_path + i, dir_path + new_name)
break
except:
# If the file exists...
new_name = dir_name + '({})'.format(counter) + '.' + extension
counter += 1
此代码确保即使碰巧存在具有现有名称的文件,它也会在括号中加上数字后缀。