Moving specific file types with Python
Question: I know this is going to be frustratingly easy for many of you. I am just
beginning to learn Python and need help with some basic file handling.

I take a lot of screenshots, which end up on my desktop (as this is the
default setting). I am aware I can change the screenshot setting to save it
somewhere else automatically. However, I think this program will be a good way
to teach me how to sort files. I would like to use python to automatically
sort through all the files on my desktop, identify those that end with .png
(the default file type for screenshots), and simply move it to a folder I've
named "Archive".

This is what I've got so far:

    
    
    import os
    import shutil
    source = os.listdir('/Users/kevinconnell/Desktop/Test_Folder/')
    destination = 'Archive'
    for files in source:
        if files.endswith('.png'):
            shutil.move(source, destination)
    

I've played around with it plenty to no avail. In this latest version, I am
encountering the following error when I run the program:

> Traceback (most recent call last): File "pngmove_2.0.py", line 23, in
> shutil.move(source, destination) File
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py",
> line 290, in move TypeError: coercing to Unicode: need string or buffer,
> list found

I am under the impression I have a sort of issue with the proper
convention/syntax necessary for the source and destination. However, I've thus
far been unable to find much help on how to fix it. I used os.path.abspath()
to determine the file path you see above.

Thanks in advance for any help in preserving my sanity.

# LATEST UPDATE

I believe I am very close to getting to the bottom of this. I'm sure if I
continue to play around with it I'll figure it out. Just so everyone that's
been helping me is updated...

This is the current code I'm working with:

    
    
    import os
    import shutil
    sourcepath ='/Users/kevinconnell/Desktop/'
    source = os.listdir(sourcepath)
    destinationpath = '/Users/kevinconnell/Desktop/'
    for files in source:
        if files.endswith('.png'):
            shutil.move(os.path.join(sourcepath,'Test_Folder'), os.path.join(destinationpath,'Archive'))
    

This works for renaming my 'Test_Folder' folder to 'Archive'. **However** , it
moves all the files in the folder, instead of moving the files that end with
'.png'.


Answer: your moving total folder,need to move only file

    
    
    import os
    import shutil
    sourcepath='C:/Users/kevinconnell/Desktop/Test_Folder/'
    source = os.listdir(sourcepath)
    destinationpath = 'C:/Users/kevinconnell/Desktop/Test_Folder/Archive'
    for files in source:
        if files.endswith('.png'):
            shutil.move(os.path.join(sourcepath,files), os.path.join(destinationpath,files))
    

