(src_dir, dst_dir)
Move everything under `src_dir` to `dst_dir`, and delete the former.
Move everything under `src_dir` to `dst_dir`, and delete the former.
Move everything under src_dir to dst_dir and delete the former .
def unpack(src_dir, dst_dir):
    '''Move everything under `src_dir` to `dst_dir`, and delete the former.'''
    for dirpath, dirnames, filenames in os.walk(src_dir):
        subdir = os.path.relpath(dirpath, src_dir)
        for f in filenames:
            src = os.path.join(dirpath, f)
            dst = os.path.join(dst_dir, subdir, f)
            os.renames(src, dst)
        for n, d in reversed(list(enumerate(dirnames))):
            src = os.path.join(dirpath, d)
            dst = os.path.join(dst_dir, subdir, d)
            if not os.path.exists(dst):
                # Directory does not exist in destination,
                # rename it and prune it from os.walk list.
                os.renames(src, dst)
                del dirnames[n]
    # Cleanup.
    for dirpath, dirnames, filenames in os.walk(src_dir, topdown=True):
        assert not filenames
        os.rmdir(dirpath)
def unpack ( src_dir , dst_dir ) : for dirpath , dirnames , filenames in os . walk ( src_dir ) : subdir = os . path . relpath ( dirpath , src_dir ) for f in filenames : src = os . path . join ( dirpath , f ) dst = os . path . join ( dst_dir , subdir , f ) os . renames ( src , dst ) for n , d in reversed ( list ( enumerate ( dirnames ) ) ) : src = os . path . join ( dirpath , d ) dst = os . path . join ( dst_dir , subdir , d ) if not os . path . exists ( dst ) : # Directory does not exist in destination, # rename it and prune it from os.walk list. os . renames ( src , dst ) del dirnames [ n ] # Cleanup. for dirpath , dirnames , filenames in os . walk ( src_dir , topdown = True ) : assert not filenames os . rmdir ( dirpath )