02-06-2021, 10:35 PM
Buen dia.
Vengo a compartir un pequeno programa para organizar carpetas, a diferencia del ultimo organizador, este posee interface, y permite agregar y eliminar extenciones y carpetas, ademas de elegir la carpeta donde se crearan y modificaran los archivos.
Vengo a compartir un pequeno programa para organizar carpetas, a diferencia del ultimo organizador, este posee interface, y permite agregar y eliminar extenciones y carpetas, ademas de elegir la carpeta donde se crearan y modificaran los archivos.
Código:
"""
Created on Sat Abr 24 22:01:13 2021
@autor: SlayerBur
"""
import os # Libreria de rutas
import os.path
from posixpath import split
#from posixpath import realpath
import shutil # Archivos
from tkinter import *
from tkinter import filedialog
import re
import pprint
#Obtengo la ruta en la que estoy ahora
ruta = os.getcwd()
# Variables
relxExt = 0.1 #Posicion X extenciones
separacion = 0.095 # Separacino en X (Botones)
relxCarpetas = 0.5 # Posicion X Carpetas
root = Tk()
root.title("Organizador")
root.geometry('400x380')
root.resizable(0,0)
configuracionInicial = {"Imagen":[".png",".NEF",".jpg", ".JPG"], "Texto":[".doc",".pdf",".cfg"], "Videos":[".mp4",".avi",".flv"]}
datos = {}
seleccionado = ""
#--------------------------
# Organizador
def crearCarpetas(): #Verifico existencia y creacion de carpeta en caso de no existir
for carpeta in datos.keys():
ubicacion = ruta + "/" + carpeta.replace(":", "")
if (os.path.exists(ubicacion) == False):
os.makedirs(ubicacion)
def cargarTxt():
global datos
if (os.path.exists("extCarp.txt") == False):
file = open("./extCarp.txt", "w")
datos = configuracionInicial
file.close()
def moverArchivos():
global ruta
Archivos = os.listdir(ruta) #Obtengo los archivos existentes
archivosExistentes = []
for archivo in Archivos:
archivosExistentes.append(archivo)
for archivo in archivosExistentes:
nombre, extencion = os.path.splitext(archivo)
archivo = ruta + "/" +archivo
for llave, dato in datos.items():
ubicacion = ruta + "/" + llave
for i in dato:
if (extencion == ".py"):
pass
elif (i == extencion):
shutil.move(archivo, ubicacion)
#print(archivosExistentes)
#--------------------------
def carpetaSelect():
carpetaSelec = [listaCarpetas.get(listaCarpetas.curselection())]
carpetaSelec = str(carpetaSelec).replace("['", "").replace("']","")
return carpetaSelec
def eliminarExtencion():
global seleccionado
seleccion = listaExtenciones.curselection()
print(seleccion)
datos[seleccionado].remove(listaExtenciones.get(seleccion))
listaExtenciones.delete(seleccion)
def anadirExtencion():
listaExtenciones.insert(END, "."+entryExtencion.get())
datos[carpetaSelect()].append("."+str(entryExtencion.get()))
entryExtencion.delete(-1,END)
def actualizarExtenciones(event):
global seleccionado
seleccionado = carpetaSelect()
listaExtenciones.delete(0,999)
for extencion in datos[listaCarpetas.get(listaCarpetas.curselection())]:
listaExtenciones.insert(0, extencion)
#-------------------------
def eliminarCarpeta():
seleccion = listaCarpetas.curselection()
textoSeleccionado = listaCarpetas.get(seleccion)
listaCarpetas.delete(seleccion)
del datos[textoSeleccionado]
def anadirCarpeta():
listaCarpetas.insert(END, entryCarpeta.get())
datos[entryCarpeta.get()] = []
entryCarpeta.delete(-1,END)
def obtenerUbicacion():
global ruta
ruta = filedialog.askdirectory(parent=root, initialdir=os.getcwd(), title="Selecciones una carpeta:")
def saveTxt():
file = open("./extCarp.txt", "w")
for key, value in datos.items():
Text = str(key) + ": " + str(value)
Text = Text.replace("::", ":")
file.write(Text)
file.close()
def loadTxt():
global datos
with open("./extCarp.txt", "r") as fd:
for line in fd:
line = line.strip()
if not (line):
continue
tokens = re.split("(\w+: )+", line)
i = 0
while (i < len(tokens)-1):
name = tokens[i].strip().replace(":","")
if not name:
i += 1
continue
extensions = tokens[i+1].strip().replace("'", "")
datos[name] = re.sub("(\[|\])", "", extensions)
datos[name] = [x.strip() for x in datos[name].split(",")]
i += 2
#pprint.pprint(datos)
def Fallos0():
#global o
#print(datos)
#print(o)
print(datos)
Label(root,text="Organizador",font=('Open Sans', 18)).place(relx=0.35)#, relwidth=0.2, relheight=0.1)
Label(root, text="Carpetas",font=("Open Sans", 12)).place(relx=relxCarpetas, rely=0.2)#, relwidth=0.1, relheight=0.2)
listaCarpetas = Listbox(root)
listaCarpetas.place(relx=relxCarpetas, rely=0.28,width=160)#, relheight=0.5, relwidth=0.24)
cargarTxt()
loadTxt()
for carpetas in datos.keys():
listaCarpetas.insert(0, carpetas)
entryCarpeta = Entry(root)
entryCarpeta.place(relx=relxCarpetas, rely=0.715,width=160)#, width=290)#, relheight=0.08, relwidth=0.24)
listaCarpetas.bind("<<ListboxSelect>>", actualizarExtenciones)
Button(root,text="Eliminar",command=eliminarCarpeta).place(relx=relxCarpetas+0.01, rely=0.77)#, relheight=0.08, relwidth=0.08)
Button(root,text="Añadir",command=anadirCarpeta).place(relx=relxCarpetas+separacion*2+0.01, rely=0.77)#, relheight=0.08, relwidth=0.08)
#-------------------------------------------------
Label(root, text="Extenciones",font=("Open Sans", 12)).place(relx=relxExt, rely=0.2)#, relwidth=0.12, relheight=0.2)
listaExtenciones = Listbox(root)
listaExtenciones.place(relx=relxExt, rely=0.28, width=160)#, relheight=0.5, relwidth=0.24)
entryExtencion = Entry(root)
entryExtencion.place(relx=relxExt, rely=0.715,width=160)#, relheight=0.08, relwidth=0.24)
Button(root,text="Eliminar",command=eliminarExtencion).place(relx=relxExt, rely=0.77)#, relheight=0.08, relwidth=0.08)
Button(root,text="Añadir",command=anadirExtencion).place(relx=relxExt+separacion*2, rely=0.77)#, relheight=0.08, relwidth=0.08)
Button(root,text="Guardar",command=saveTxt).place(relx=relxExt+separacion*3.3, rely=0.87, relheight=0.08, relwidth=0.15)
#Button(root,text="Cargar",command=loadTxt).place(relx=relxExt+separacion*3, rely=0.62, relheight=0.08, relwidth=0.08)
#Button(root,text="gar",command=Fallos0).place(relx=relxExt+separacion*4, rely=0.62, relheight=0.08, relwidth=0.08)
#------------------------
# Botones Principales
Button(root,text="Organizar",command=moverArchivos).place(relx=relxExt, rely=0.1)#, relheight=0.08, relwidth=0.15)
Button(root,text="Crear Carpetas",command=crearCarpetas).place(relx=relxExt+0.25, rely=0.1)#, relheight=0.08, relwidth=0.15)
Button(root,text="Ubicacion",command=obtenerUbicacion).place(relx=relxExt+0.58, rely=0.1)#, relheight=0.08, relwidth=0.15)
root.protocol("WM_DELETE_WINDOW", saveTxt()) # Al cerrar guarda
root.mainloop()
#os.makedirs('Otros') # Crea una carpeta