Automate boring files organizing using python (Python files organizer)
Budy mnvenom
Posted on August 30, 2021
Intro
Hello today we are going to code a files organizer using python script it will organize the files by their types for example it will put all files with extension (.png) in a folder called Pictures let's code ... (this post is published here Python files organizer, automate boring files organizing using python)
Coding
Importing needed modules
those are the modules we are going to use
if you have any problem you can post it on comments
import os
import pathlib
import shutil
import fnmatch
Preparing the default folder for every type of files
So now we are going to set a folder for every type for example we want to move the pictures to the folder in path '/home/rin/Downloads/'
in my case i am using linux on windows the paths will look like ' C:\rin\Brink\Pictures'
## define path for every category
file_folder={
'Music':'/home/rin/Downloads/',
'Pictures':'/home/rin/Pictures/',
'Documents':'/home/rin/Documents/',
'Archives':'/home/rin/Archives/',
'Videos':'/home/rin/Videos/',
'Codes':'/home/rin/Codes/'
}
Defining the type of file by the extension
What's extension ?
A file extension or file name extension is the ending of a file that helps identify the type of file in operating systems, such as Microsoft Windows. In Microsoft Windows, the file name extension is a period that is often followed by three characters but may also be one, two, or four characters long.
As an example, the file name "myfile.txt" has a file extension of ".txt," which is a file name extension associated with text files.
So code :
## define the type of every extension
file_type={'Pictures':['.jpg', '.jpeg', '.jpe','.png','.jp2','.ico', '.wbmp','.j2k', '.jpf', '.jpx', '.jpm', '.mj2','.svg', '.svgz','.webp','.gif']
,'Music':['mp3']
,'Videos':['.mp4','.srt','.mkv','.3gp','.m4a']
,'Documents':['.pdf','.docx','.doc','.csv','.txt','.xls','.xlsx','.log']
,'Archives':['.zip','.tar']
,'Codes':['.py']}
Main code
Now we take the path of the folder contains the files we want organize as example for me i want clean my download folder
path='/home/rin/Downloads/'
So now what we want to do is extracting all the files in the folder and check the type of every file then move it to the folder contains its type
files=os.listdir(path)# list of files in the folder
for file in files:#for for every file in the list
extension=pathlib.Path(file).suffix #extension of file ex:(.txt)
#Documents
if extension in file_type['Documents']:#check if the file is a document
move=pathlib.Path(path+file).rename(file_folder['Documents']+file)# move the file to the folder conatins documents
#move=shutil.move(path+file,file_folder['Documents'])
print('success #### {} to {}'.format(file,move))
#Music
if extension in file_type['Music']:
move=pathlib.Path(path+file).rename(file_folder['Music']+file)
#move=shutil.move(path+file,file_folder['Music'])
print('success #### {} to {}'.format(file,move))
#Pictures
if extension in file_type['Pictures']:
move=pathlib.Path(path+file).rename(file_folder['Pictures']+file)
#move=shutil.move(path+file,file_folder['Pictures'])
print('success #### {} to {}'.format(file,move))
#Videos
if extension in file_type['Videos']:
move=pathlib.Path(path+file).rename(file_folder['Videos']+file)
#move=shutil.move(path+file,file_folder['Videos'])
print('success #### {} to {}'.format(file,move))
#Archives
if extension in file_type['Archives']:
move=pathlib.Path(path+file).rename(file_folder['Archives']+file)
#move=shutil.move(path+file,file_folder['Archives'])
print('success #### {} to {}'.format(file,move))
#Codes
if extension in file_type['Codes']:
move=pathlib.Path(path+file).rename(file_folder['Codes']+file)
#move=shutil.move(path+file,file_folder['Codes'])
print('success #### {} to {}'.format(file,move))
else:
print('## '+file)
Note : You can add more types
Full source code
DON'T FORGET TO CHANGE THE PATHS ALSO YOU CAN ADD MORE CATEGORY BE SMART ..
import os
import pathlib
import shutil
import fnmatch
## define path for every category
file_folder={
'Music':'/home/rin/Downloads/',
'Pictures':'/home/rin/Pictures/',
'Documents':'/home/rin/Documents/',
'Archives':'/home/rin/Archives/',
'Videos':'/home/rin/Videos/',
'Codes':'/home/rin/Codes/'
}
## define the type of every extension
file_type={'Pictures':['.jpg', '.jpeg', '.jpe','.png','.jp2','.ico', '.wbmp','.j2k', '.jpf', '.jpx', '.jpm', '.mj2','.svg', '.svgz','.webp','.gif']
,'Music':['mp3']
,'Videos':['.mp4','.srt','.mkv','.3gp','.m4a']
,'Documents':['.pdf','.docx','.doc','.csv','.txt','.xls','.xlsx','.log']
,'Archives':['.zip','.tar']
,'Codes':['.py']}
path='/home/rin/Downloads/'
files=os.listdir(path)# list of files in the folder
for file in files:#for for every file in the list
extension=pathlib.Path(file).suffix #extension of file ex:(.txt)
#Documents
if extension in file_type['Documents']:#check if the file is a document
move=pathlib.Path(path+file).rename(file_folder['Documents']+file)# move the file to the folder conatins documents
#move=shutil.move(path+file,file_folder['Documents'])
print('success #### {} to {}'.format(file,move))
#Music
if extension in file_type['Music']:
move=pathlib.Path(path+file).rename(file_folder['Music']+file)
#move=shutil.move(path+file,file_folder['Music'])
print('success #### {} to {}'.format(file,move))
#Pictures
if extension in file_type['Pictures']:
move=pathlib.Path(path+file).rename(file_folder['Pictures']+file)
#move=shutil.move(path+file,file_folder['Pictures'])
print('success #### {} to {}'.format(file,move))
#Videos
if extension in file_type['Videos']:
move=pathlib.Path(path+file).rename(file_folder['Videos']+file)
#move=shutil.move(path+file,file_folder['Videos'])
print('success #### {} to {}'.format(file,move))
#Archives
if extension in file_type['Archives']:
move=pathlib.Path(path+file).rename(file_folder['Archives']+file)
#move=shutil.move(path+file,file_folder['Archives'])
print('success #### {} to {}'.format(file,move))
#Codes
if extension in file_type['Codes']:
move=pathlib.Path(path+file).rename(file_folder['Codes']+file)
#move=shutil.move(path+file,file_folder['Codes'])
print('success #### {} to {}'.format(file,move))
else:
print('## '+file)
Feel free to develop the code and post any problem or request in the comments
Posted on August 30, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.