python: переименовать файлы в подпапках по имени подпапки

У меня есть папка с большим количеством подпапок. В каждой из подпапок есть разные типы файлов. Я пытаюсь переименовать эти файлы по имени подпапки, в которой они находятся (они не будут дублироваться, поскольку каждый файл имеет собственное расширение). Данные выглядят так:

folder
        \ sub1
        \ sub1\file1.ext1
        \ sub1\file2.ext2
        .
        .
        .
        \ sub2
        \ sub2\file1.ext1
        \ sub2\file2.ext2

Желаемый результат

  folder
    \ sub1
    \ sub1\sub1.ext1
    \ sub1\sub1.ext2
    .
    .
    .
    \ sub2
    \ sub2\sub2.ext1
    \ sub2\sub2.ext2

`

Мой кусок кода, который не работает.

import os

dir_name = os.getcwd() 

for root, dirs, files in os.walk(dir_name, topdown=False):
    for file in files:
        file_name = os.path.splitext(file)[0]#file name no ext
        os.rename(os.path.splitext(file)[0], root ) 

Любые идеи? благодарю вас.


person Nadiia    schedule 21.07.2017    source источник
comment
Вы пробовали решение, предоставленное мной ниже?   -  person Kaushik Nayak    schedule 25.07.2017


Ответы (1)


Вы можете использовать os.path.basename, чтобы получить имя каталога root.

import os

dir_name = os.getcwd() 

for root, dirs, files in os.walk(dir_name, topdown=False):
    for file in files:
        file_name = os.path.splitext(file)[0]#file name no ext
        extension = os.path.splitext(file)[1]
        dir_name = os.path.basename(root)
        os.rename(root+"/"+file,root+"/"+dir_name+extension)
person Kaushik Nayak    schedule 21.07.2017
comment
Большое спасибо. Это то, что мне было нужно - person Nadiia; 27.07.2017