python append folder name to filenames in all sub folders

By : burt46
Source: Stackoverflow.com
Question!

I am trying to append the name of a folder to all filenames within that folder. I have to loop through a parent folder that contain sub folders. I have to do this in Python and not a bat file.

Example is, take these folders:

Parent Folder
 Sub1
  example01.txt
  example01.jpg
  example01.tif
 Sub2
  example01.txt
  example01.jpg
  example01.tif

To this

Parent Folder
 Sub1
  Sub1_example01.txt
  Sub1_example01.jpg
  Sub1_example01.tif
 Sub2
  Sub2_example01.txt
  Sub2_example01.jpg
  Sub2_example01.tif

I believe its os.rename, but i cant work out how to call the folder name.

Thanks for the advice.

By : burt46


Answers

You can use os.walk to iterate over the directories and then os.rename to rename all the files:

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))
By : niemmi


I would use os.path.basename on the root to find your prefix.

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)))

Before

By : sberry


This video can help you solving your question :)
By: admin