【发布时间】:2018-11-30 15:08:28
【问题描述】:
我有很多文件夹。在每个文件夹中,都有一个图像。我想用其文件夹的名称重命名所有图像。
例如: 文件夹“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...
文件夹树和图片是这样的:
问:/1_Projekte/2980/1/43425.jpg
问:/1_Projekte/2980/2/43465.jpg
问:/1_Projekte/2980/3/43483.jpg
问:/1_Projekte/2980/4/43499.jpg
所以每个目录只有一个文件!
【问题讨论】:
-
您收到错误是因为当程序尝试将第二个文件重命名为
1.jpg时,它将失败,错误文件已经可用 -
正如@Rakesh 指出的那样,您不必将名称和扩展名放在同一目录中的文件。
-
当您的初始假设错误时会发生这种情况:您说“在每个文件夹中,都有 一个 图像”,但实际上不止一个图像。 (或者更确切地说,任何类型的文件 - 您的代码中没有任何内容将其限制为“仅”图像。)
-
@Rakesh - 每个目录中只有一个文件。如果不是这样,你知道有什么方法可以自动将名称更改为 1(1).jpg 或类似的东西,或者我必须以经典方式编写这段代码。
-
@usr2564301 - 我确信子目录中只有一张图片。我找不到为什么代码尝试再次重命名同一个文件。
标签: python python-3.x directory file-rename