[ Foro de Python ]

AYUDA

09-May-2024 06:44
Invitado (Ecaroli)
1 Respuestas

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()


19-Jun-2024 13:20
Invitado (1niko)

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()






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...