mirror of
https://github.com/hastagAB/Awesome-Python-Scripts.git
synced 2025-01-31 05:33:41 +00:00
file_organizer.py file updation with more features.
This commit is contained in:
parent
f0ea440d41
commit
d783b269ea
|
@ -1,8 +1,14 @@
|
||||||
# File Organizer
|
# File Organizer
|
||||||
Organizes your files in the folder according to their extension by grouping them together.
|
Organizes your files in the folder according to their extension by grouping them together.
|
||||||
|
Works on both Windows and Linux based operating systems.
|
||||||
|
|
||||||
# Libraries Used
|
# Libraries Used
|
||||||
-
|
os
|
||||||
|
path
|
||||||
|
shutil
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
Just run the command `python3 file-organizerpy` from your terminal/bash.
|
Just run the command `python3 file-organizer.py` from your terminal/bash.
|
||||||
|
Will ask for to organize current 1.directory(folder) or specific 2.directory(folder),
|
||||||
|
If '2' is selected please copy paste or type the folder absolute path.
|
||||||
|
|
|
@ -1,24 +1,120 @@
|
||||||
import os
|
import os
|
||||||
|
import pathlib
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
#The Path of the directory to be sorted
|
'''
|
||||||
path = 'C:\\Users\\<USERNAME>\\Downloads'
|
Different type of file formats
|
||||||
#This populates a list with the filenames in the directory
|
'''
|
||||||
list_ = os.listdir(path)
|
|
||||||
|
|
||||||
#Traverses every file
|
fileFormat = {
|
||||||
for file_ in list_:
|
"Web": [".html5", ".html", ".htm", ".xhtml",".csv",".webp",".acsm"],
|
||||||
name,ext = os.path.splitext(file_)
|
|
||||||
print(name)
|
"Picture": [".jpeg", ".jpg", ".tiff", ".gif",".heic",".HEIC"
|
||||||
#Stores the extension type
|
".bmp", ".png", ".bpg", ".svg", ".heif", ".psd"],
|
||||||
ext = ext[1:]
|
|
||||||
#If it is directory, it forces the next iteration
|
"Video": [".avi", ".mkv", ".flv", ".wmv",
|
||||||
if ext == '':
|
".mov", ".mp4", "..webm", ". vob",
|
||||||
continue
|
".mng", ".qt", ".mpg", ".mpeg", ".3gp"],
|
||||||
#If a directory with the name 'ext' exists, it moves the file to that directory
|
|
||||||
if os.path.exists(path+'/'+ext):
|
"Document": [".oxps", ".epub", ".pages", ".docx",
|
||||||
shutil.move(path+'/'+file_,path+'/'+ext+'/'+file_)
|
".txt", ".pdf", ".doc", ".fdf",
|
||||||
#If the directory does not exist, it creates a new directory
|
".ods", ".odt", ".pwi", ". xsn",
|
||||||
|
". xps" , ".dotx", ".docm", ".dox",
|
||||||
|
".rvg", ".rtf", ".rtfd", ".wpd",
|
||||||
|
".xls", ".xlsx", ".ppt", "pptx" , ".md"],
|
||||||
|
"PPT" : [".pptx"],
|
||||||
|
|
||||||
|
"Compressed": [".a", ".ar", ".cpio", ".iso",
|
||||||
|
".tar", ".gz", ".rz", ".7z",
|
||||||
|
".dmg", ".rar", ".xar", ".zip",
|
||||||
|
".msi",".msix"],
|
||||||
|
|
||||||
|
"Audio": [".aac", ".aa", ".aac", ".dvf",
|
||||||
|
".m4a", ".m4b", ".m4p", ".mp3",
|
||||||
|
".msv", "ogg", "oga", ".raw",
|
||||||
|
".vox", ".wav", ".wma", "aiff"],
|
||||||
|
|
||||||
|
"Torrent":[".srt",".torrent"],
|
||||||
|
|
||||||
|
"Installable":[".exe"],
|
||||||
|
|
||||||
|
"apk":[".apk"],
|
||||||
|
|
||||||
|
"c_cpp":[".c",".cpp"],
|
||||||
|
|
||||||
|
"python":[".py",".ipynb"],
|
||||||
|
|
||||||
|
"JSON":[".json"],
|
||||||
|
|
||||||
|
"font_style":[".otf"],
|
||||||
|
|
||||||
|
"CSV_XL" : [".csv",".xlsx",".xlsm","xlsb"]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fileTypes = list(fileFormat.keys())
|
||||||
|
fileFormats= list(fileFormat.values())
|
||||||
|
|
||||||
|
def organizer(directory):
|
||||||
|
|
||||||
|
files_of_the_folder = os.listdir(directory)
|
||||||
|
directory += '/'
|
||||||
|
|
||||||
|
for file in files_of_the_folder:
|
||||||
|
fileName = pathlib.Path(file)
|
||||||
|
fileFormatType = fileName.suffix.lower()
|
||||||
|
|
||||||
|
if (fileName != "file_organizer" and fileFormatType != ".py"): #to exclude file_organizer.py file
|
||||||
|
src = directory + str(fileName)
|
||||||
|
destination = directory + "Other" #default destination for the file is 'Other' folder
|
||||||
|
|
||||||
|
if fileFormatType == "":
|
||||||
|
print(f"{src} has no file Format")
|
||||||
else:
|
else:
|
||||||
os.makedirs(path+'/'+ext)
|
for formats in fileFormats:
|
||||||
shutil.move(path+'/'+file_,path+'/'+ext+'/'+file_)
|
|
||||||
|
if fileFormatType in formats: #checking for file format
|
||||||
|
folder = fileTypes[fileFormats.index(formats)] # getting the folder name for the file format
|
||||||
|
|
||||||
|
if os.path.isdir(directory + folder) == False: #if the folder doesn't exist creat new folder(specific to the file format)
|
||||||
|
os.mkdir(directory + folder)
|
||||||
|
destination = directory + folder
|
||||||
|
|
||||||
|
else:
|
||||||
|
if os.path.isdir("Other") == False:
|
||||||
|
os.mkdir(destination + "Other") #if 'Other' folder doesn't exist create it.
|
||||||
|
print(src, " ----------moved to--------> ", destination, ",") #bash : message
|
||||||
|
try:
|
||||||
|
shutil.move(src, destination)
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
|
||||||
|
print("Files are organized.... files with uncommon extensions might be store in 'Others' folder. Please Check....") #bash : completion message
|
||||||
|
|
||||||
|
|
||||||
|
while(True):
|
||||||
|
choices = input("Would you like to organize: \n1. Current file directory?(type 1/Y) \n2. Different directory?(type 2/N) \n3. Type '3/exit' to exit \nYOUR CHOICE : ")
|
||||||
|
print()
|
||||||
|
|
||||||
|
if choices.upper() == 'Y' or choices == '1' : #organize current folder
|
||||||
|
organizer(os.getcwd())
|
||||||
|
break
|
||||||
|
|
||||||
|
elif choices.upper() == 'N' or choices == '2': #organize specific folder
|
||||||
|
path = input("Specify the path of the Directory(Folder) you want to organize ; [provide absolute path] ")
|
||||||
|
if os.path.exists(path):
|
||||||
|
print(" The path exists.\n")
|
||||||
|
organizer(path)
|
||||||
|
break
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("The path does not exist.\n")
|
||||||
|
continue
|
||||||
|
|
||||||
|
elif choices.upper() == 'EXIT' or choices == '3':
|
||||||
|
print("Exiting...")
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
colorama
|
os
|
||||||
|
path
|
||||||
|
shutil
|
Loading…
Reference in New Issue
Block a user