如何重命名所有文件以包含目录名称?

AA2018-2020

我正在尝试在下面的代码中使用 For 循环来浏览文件列表并使用文件目录的名称重命名它们。

import re           # add this to your other imports
import os

for files in os.walk("."):
    for f_new in files:
                    folder = files.split(os.sep)[-2]
                    print(folder)   
                    name_elements = re.findall(r'(Position)(\d+)', f_new)[0]
                    name = name_elements[0] + str(int(name_elements[1]))
                    print(name)       # just for demonstration
                    dst = folder + '_' + name
                    print(dst)
                    os.rename('Position014 (RGB rendering) - 1024 x 1024 x 1 x 1 - 3 ch (8 bits).tif', dst)
特伦顿麦金尼

采用 pathlib

  • Path.rglob:这是像调用Path.glob()'**/'在给定的相对图案前面加:
  • .parent.parents[0]:提供对路径逻辑祖先的访问的不可变序列
    • 如果您想要路径的不同部分,请使用parents[]不同的 索引
      • file.parents[0].stem返回'test1''test2'取决于文件
      • file.parents[1].stem 返回 'photos'
      • file.parents[2].stem 返回 'stack_overflow'
  • .stem: 最后的路径组件,没有后缀
  • .suffix: 最终组件的文件扩展名
  • .rename: 将此文件或目录重命名为给定的目标
  • 以下代码仅查找.tiff文件。使用*.*得到的所有文件。
  • 如果您只想要 的前 10 个字符file_name
    • file_name = file_name[:10]
form pathlib import Path

# set path to files
p = Path('e:/PythonProjects/stack_overflow/photos/')

# get all files in subdirectories with a tiff extension
files = list(p.rglob('*.tiff'))

# print files example
[WindowsPath('e:/PythonProjects/stack_overflow/photos/test1/test.tiff'), WindowsPath('e:/PythonProjects/stack_overflow/photos/test2/test.tiff')]

# iterate through files
for file in files:
    file_path = file.parent  # get only path
    dir_name = file.parent.stem  # get the directory name
    file_name = file.stem  # get the file name
    suffix = file.suffix  # get the file extension
    file_name_new = f'{dir_name}_{file_name}{suffix}'  # make the new file name
    file.rename(file_path / file_name_new)  # rename the file


# output files renamed
[WindowsPath('e:/PythonProjects/stack_overflow/photos/test1/test1_test.tiff'), WindowsPath('e:/PythonProjects/stack_overflow/photos/test2/test2_test.tiff')]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用目录名称重命名文件?

重命名目录名称中包含扩展名的树中文件

根据目录名称重命名文件

根据目录名称重命名文件

使用 Powershell 重命名当前目录中包含文件和子目录的所有文件夹名称

如何使用linux命令以其先前的目录名称重命名.html文件?

Perforce:如何重命名目录名称

如何在终端上将所有目录中的文件重命名为相同的名称

重命名部分目录名称?

对于目录,将具有子目录名称+旧文件名的子目录中的文件重命名为新目录

根据目录中包含的文本重命名目录中的所有文件

将子目录中的多个文件重命名为其目录名称

Powershell重命名目录中的所有文件,重命名值来自被重命名的文件

根据目录名称中的多个字符重命名文件

以递归方式将输出 PDF 文件重命名为子目录名称 Powershell

bash脚本-重命名目录中包含* space *()*-的所有文件

如何将所有目录名称写出到文本文件中

如何在保持文件扩展名的同时将目录中的文件重命名为其各自的目录名称?

如何重命名(取消隐藏)目录中的所有文件和子目录?

重命名所有二级子目录中所有具有特定名称的文件

如何重命名目录中所有带有特殊字符和空格的文件?

重命名所有具有特定名称的文件

使用父目录名称重命名多个不同名称和扩展名的文件

如何使用find重命名具有相同名称的不同目录中的文件

如何使用其父目录的名称重命名文件?

重命名目录中特定类型的所有文件

重命名不同子目录中的所有文件

重命名NSLibraryDirectory中的所有文件和目录

Powershell脚本重命名目录中的所有文件