[ Foro de Python ]
hola soy nuevo programando en Python, he intentado hacer un programa que me copie o actualice una carpeta en específico cada vez que conecte un USB, mi problema es que al conectar el usb dicho programa no hace nada y no encuentro el porque, uso windows 10 y este es el código del programa, espero que me puedan ayudar.
código:
import os
import shutil
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# Ruta de la carpeta que deseas copiar o actualizar
carpeta_a_copiar = "C:\\Users\\ecaro\\Documents\\Planos"
# Ruta de la unidad USB montada (puedes encontrarla ejecutando 'lsblk' o 'df -h' en la terminal)
unidad_usb = "D:\\"
class USBEventHandler(FileSystemEventHandler):
def __init__(self, logfile):
self.logfile = logfile
def on_any_event(self, event):
print(f"Evento detectado: {event}")
print("Cambio detectado en la carpeta vigilada")
if os.path.exists(os.path.join(unidad_usb, os.path.basename(carpeta_a_copiar))):
self.actualizar_carpeta()
else:
self.copiar_carpeta()
def copiar_carpeta(self):
try:
print("Copiando carpeta...")
shutil.copytree(carpeta_a_copiar, os.path.join(unidad_usb, os.path.basename(carpeta_a_copiar)))
print("Carpeta copiada correctamente")
except Exception as e:
print(f"Error al copiar la carpeta: {e}")
with open(self.logfile, 'a') as f:
f.write(f"Error al copiar la carpeta: {e}\n")
def actualizar_carpeta(self):
try:
print("Actualizando carpeta...")
shutil.rmtree(os.path.join(unidad_usb, os.path.basename(carpeta_a_copiar)))
shutil.copytree(carpeta_a_copiar, os.path.join(unidad_usb, os.path.basename(carpeta_a_copiar)))
print("Carpeta actualizada correctamente")
except Exception as e:
print(f"Error al actualizar la carpeta: {e}")
with open(self.logfile, 'a') as f:
f.write(f"Error al actualizar la carpeta: {e}\n")
if __name__ == "__main__":
# Ruta del archivo de registro
logfile = "monitor_usb.log"
event_handler = USBEventHandler(logfile)
observer = Observer()
observer.schedule(event_handler, carpeta_a_copiar, recursive=True)
try:
print("Iniciando monitor de USB...")
observer.start()
while True:
time.sleep(1)
except KeyboardInterrupt:
print("Deteniendo monitor de USB...")
observer.stop()
observer.join()
Alguien que me ayude, intento hacer un block de notas y no se ejecuta el programa. Por favor me pudieran decir donde está el error!! Gracias
import os
from tkinter import *
from tkinter import filedialog, colorchooser, font
from tkinter import messagebox
from tkinter.messagebox import *
from tkinter.filedialog import *
def change_color():
color = colorchooser.askcolor(title="Colores")
text_area.config(fg=color[1])
def change_font():
text_area.config(font=(font_name.get(), size_box.get()))
def new_file():
window.title("Sin Título: Block de Notas")
text_area.delete(1.0, END)
def open_file():
file = askopenfilename(defaultextension=".txt", file=[("All Files", "*.*"),
("Text Documents", "*.txt")])
try:
window.title(os.path.basename(file))
text_area.delete(1.0, END)
file = open(file, "r")
text_area.insert(1.0, file.read())
except Exception:
print("!No se puede leer el Archivo!")
finally:
file.close()
def save_file():
file = filedialog.askopenfilename(initialfile="Sin Título.txt",
defaultextension=".txt",
filetypes=[("All Files", "*.*"),
("Text Documents", "*.txt")])
if file is None:
return
else:
try:
window.title(os.path.basename(file))
file = open(file, "w")
file.write(text_area.get(1.0, END))
except Exception:
print("!No se pudo Guardar el Archivo!")
finally:
file.close()
def cut():
text_area.event_generate("<<Cut>>")
def copy():
text_area.event_generate("<<Copy>>")
def pasate():
text_area.event_generate("<<Paste>>")
def about():
showinfo("Acerca de Block de Notas Guille", "Block de Notas Guille es un lector de archivos de texto plano,"
def quit():
window.destroy()
window = Tk()
window.title("Block de Notas Guille")
file = None
font_name = StringVar(window)
font_name.set("Arial")
font_size = StringVar(window)
font_size.set("16")
window_width = 500
window_heigth = 500
screen_width = window.winfo_screenwidth()
screen_heigth = window.winfo_screenheigth()
x = int((screen_width / 2) = (window_width / 2))
y = int((screen_heigth / 2) = (window_heigth / 2))
window.geometry("{}x{}x{}x{}".format(window_width, window_heigth, x, y))
text_area = Text(window, font=(font_name.get(), font_name.get()))
scroll_bar = Scrollbar(text_area)
window.grid_rowconfigure(0, weight=1)
window.grid_columnconfigure(0, weight=1)
text_area.grid(sticky=N + E + S + W)
frame = Frame(window)
frame.grid()
color_button = Button(frame, text="color", command=change_color)
color_button.grid(row=0, column=0)
font_box = OptionMenu(frame, font_name, *font.families(), command=change_font)
font_box.grid(row=0, column=1)
size_box = Spinbox(frame, from_=1, to=100, textvariable=font_size, command=change_font)
size_box.grid(row=0, column=2)
scroll_bar.pack(side=RIGHT, fill=Y)
text_area.config(yscrollcommand=Scrollbar.set)
menu_bar = Menu(window)
window.config(menu=menu_bar)
file_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="Archivo", menu=file_menu)
file_menu.add_command(Label="Nuevo", command=new_file)
file_menu.add_command(Label="Abrir", command=open_file)
file_menu.add_command(Label="Guardar", command=save_file)
file_menu.add_separator()
file_menu.add_command(Label="Salir", command=quit)
edit_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="Edición", menu=edit_menu)
file_menu.add_command(Label="Cortar", command=cut)
file_menu.add_command(Label="Copiar", command=copy)
file_menu.add_command(Label="Pegar", command=pasate)
help_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="Ayuda", menu=help_menu)
file_menu.add_command(Label="Acerca de Block de Notas", command=about)
window.mainloop()
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)