gpt4 book ai didi

python - 重命名多个文件夹内的多个文件

转载 作者:行者123 更新时间:2023-11-30 22:31:48 25 4
gpt4 key购买 nike

所以我有很多具有特定名称的文件夹。每个文件夹中都有超过 200 个项目。文件夹内的项目名称如下:

CT.34562346.246.dcm
RD.34562346.dcm
RN.34562346.LAO.dcm

还有一些类似的风格。

我现在希望重命名所有文件夹中的所有文件,以便将数字 (34562346) 替换为文件夹的名称。例如,在名为“1”的文件夹中,其中的文件应变为:

CT.1.246.dcm
RD.1.dcm
RN.1.LAO.dcm

所以只替换大数。是的,所有文件都是类似的。它将是第一个之后的数字。应该重命名。

到目前为止我已经:

import os

base_dir = "foo/bar/" #In this dir I have all my folders

dir_list = []
for dirname in os.walk(base_dir):
dir_list.append(dirname[0])

这只是列出所有文件夹的完整路径。

dir_list_split = []
for name in dir_list[1:]: #The 1 is because it lists the base_dir as well
x = name.split('/')[2]
dir_list_split.append(x)

此提取每个文件夹的名称。

然后下一步就是输入文件夹并重命名它们。我有点被困在这里了?

最佳答案

pathlib 模块是 Python 3.4 中的新模块,但经常被忽视。我发现它通常使代码比 os.walk 更简单。

在本例中,.glob('**/*.*') 递归地查找我在名为 example 的示例文件夹中创建的所有文件夹和子文件夹>。 *.* 部分表示它考虑所有文件。

我将 path.parts 放入循环中,以向您展示 pathlib 安排为您解析路径名。

我首先检查字符串常量'34562346'是否位于每个文件名中的正确位置。如果是,那么我只需将其替换为 .parts 中的项目,即文件夹树“上”文件夹的下一级。

然后我可以将 .parts 最右边的元素替换为新更改的文件名,以创建新的路径名,然后进行重命名。在每种情况下,如果适合创建路径名,我都会显示新路径名。

>>> from pathlib import Path
>>> from os import rename
>>> for path in Path('example').glob('**/*.*'):
... path.parts
... if path.parts[-1][3:11]=='34562346':
... new_name = path.parts[-1].replace('34562346', path.parts[-2])
... new_path = '/'.join(list(path.parts[:-1])+[new_name])
... new_path
... ## rename(str(path), new_path)
... else:
... 'no change'
...
('example', 'folder_1', 'id.34562346.6.a.txt')
'example/folder_1/id.folder_1.6.a.txt'
('example', 'folder_1', 'id.34562346.wax.txt')
'example/folder_1/id.folder_1.wax.txt'
('example', 'folder_2', 'subfolder_1', 'ty.34562346.90.py')
'example/folder_2/subfolder_1/ty.subfolder_1.90.py'
('example', 'folder_2', 'subfolder_1', 'tz.34562346.98.py')
'example/folder_2/subfolder_1/tz.subfolder_1.98.py'
('example', 'folder_2', 'subfolder_2', 'doc.34.34562346.implication.rtf')
'no change'

关于python - 重命名多个文件夹内的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45697873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com