Renaming filenames using python
Question: I need to simply add the word "_Manual" onto the end of all the files i have
in a specific directory Here is the script i am using at the moment - i have
no experience with python so this script is a frankenstine of other scripts i
had lying around!

It doesn't give any error messages but it also doesnt work..

    
    
    folder = "C:\Documents and Settings\DuffA\Bureaublad\test"
    
    import os, glob
    
    for root, dirs, filenames in os.walk(folder):
        for filename in filenames:
            filename_split = os.path.splitext(filename) # filename and extensionname (extension in [1])
            filename_zero = filename_split[0]
            os.rename(filename_zero, filename_zero + "_manual")
    

I am now using

    
    
    folder = "C:\Documents and Settings\DuffA\Bureaublad\test"
    import os # glob is unnecessary
    for root, dirs, filenames in os.walk(folder):
        for filename in filenames:
            fullpath = os.path.join(root, filename)
            filename_split = os.path.splitext(fullpath) # filename and extensionname (extension in [1])
            filename_zero, fileext = filename_split
            print fullpath, filename_zero + "_manual" + fileext
            os.rename(fullpath, filename_zero + "_manual" + fileext)
    

but it still doesnt work.. it doesnt print anything and nothing gets changed
in the folder!


Answer: `os.rename` requires a source and destination filename. The variable
`filename` contains your current filename (e.g., "something.txt"), whereas
your split separates that into `something` and `txt`. As the source file to
rename, you then only specify `something`, which fails silently.

Instead, you want to rename the file given in `filename`, but as you walk into
subfolders as well, you need to make sure to use the absolute path. For this
you can use `os.path.join(root, filename)`.

So in the end you get something like this:

    
    
    os.rename(os.path.join(root, filename), 
      os.path.join(root, filename_zero + "_manual" + filename_split[1]))
    

This would rename `dir1/something.txt` into `dir1/something_manual.txt`.

