python将文件夹名称附加到所有子文件夹中的文件名

bur*_*t46 2 python file-processing

我试图将文件夹的名称附加到该文件夹​​中的所有文件名.我必须遍历包含子文件夹的父文件夹.我必须在Python中执行此操作,而不是bat文件.

例如,拿这些文件夹:

Parent Folder
 Sub1
  example01.txt
  example01.jpg
  example01.tif
 Sub2
  example01.txt
  example01.jpg
  example01.tif
Run Code Online (Sandbox Code Playgroud)

对此

Parent Folder
 Sub1
  Sub1_example01.txt
  Sub1_example01.jpg
  Sub1_example01.tif
 Sub2
  Sub2_example01.txt
  Sub2_example01.jpg
  Sub2_example01.tif
Run Code Online (Sandbox Code Playgroud)

我相信它的os.rename,但我无法解决如何调用文件夹名称.

感谢您的建议.

sbe*_*rry 7

我会os.path.basename在root用户上找到你的前缀.

import os

for root, dirs, files in os.walk("Parent"):
    if not files:
        continue
    prefix = os.path.basename(root)
    for f in files:
        os.rename(os.path.join(root, f), os.path.join(root, "{}_{}".format(prefix, f)))
Run Code Online (Sandbox Code Playgroud)

之前

> tree Parent
Parent
??? Sub1
?   ??? example01.jpg
?   ??? example02.jpg
?   ??? example03.jpg
??? Sub2
    ??? example01.jpg
    ??? example02.jpg
    ??? example03.jpg

2 directories, 6 files
Run Code Online (Sandbox Code Playgroud)

> tree Parent
Parent
??? Sub1
?   ??? Sub1_example01.jpg
?   ??? Sub1_example02.jpg
?   ??? Sub1_example03.jpg
??? Sub2
    ??? Sub2_example01.jpg
    ??? Sub2_example02.jpg
    ??? Sub2_example03.jpg

2 directories, 6 files
Run Code Online (Sandbox Code Playgroud)


nie*_*mmi 5

您可以使用os.walk迭代目录,然后os.rename重命名所有文件:

from os import walk, path, rename

for dirpath, _, files in walk('parent'):
    for f in files:
        rename(path.join(dirpath, f), path.join(dirpath, path.split(dirpath)[-1] + '_' + f))
Run Code Online (Sandbox Code Playgroud)