Search code examples
pythondictionaryshutilpython-os

modifying key's name in python dictionary


I am trying to write a python script so that I can find all sub_directories called 'something' within a parent directory.Then I would like to rename the sub directories and move them somewhere else. So far I have my code as:

import os, shutil,fnmatch

match = {}
for root, dirnames, filenames in os.walk('test'):
    #print root
    #print dirnames
    #print filenames
    for i in fnmatch.filter(dirnames,'find'):
        #print os.path.join(root,dirnames[0])
        print root
        #match.append(root)
        match[root]=dirnames[0]

call match gives me something like {'test\a': 'find'......}. I would like to modify the key value of the dictionary so that it looks like {'a':'find'... so essentially I am trying to get rid of the name of the parent directory. I thought about converting to string and use split but seems to be not so efficient.


Solution

  • To get the dirname without the parent directory name, use os.path.basename, this way:

    >>> dirname = 'C:\\Users\\myUsers\\Videos'
    >>> os.path.basename(dirname)
    'Videos'
    

    EDIT: in response to OP comments,

    Given:

    dirname = 'C:\\Users\\myUsers\\Videos'

    And you want to get new folder name as myUsers_Videos, here is one way:

    >>> os.path.basename('_'.join(os.path.split(dirname)))
    'myUsers_Videos'