Tecnología · GUÍA PRÁCTICA
¿Python lanza WinError 32? Demuestra quién posee el handle antes de reintentar
La ruta es evidencia, no el propietario. Rastrea el objeto Python, hijo, contexto de directorio y handle externo antes de permisos, pausas o cierres.

WinError 32 no pide más privilegios para Python: el acceso o modo compartido solicitado choca con un handle vivo. Puede pertenecer al objeto actual, un hijo, el contexto de directorio u otro programa.
Fija operación y ruta, demuestra al propietario desde el proceso actual hacia fuera, cierra uno mediante su ciclo soportado y repite la carga real. No fuerces handles ni aceptes un sleep afortunado.
1. Fija la operación y la ruta exactas
Registra el traceback completo, winerror, rutas de origen y destino, PID, hilo, lanzador y la llamada exacta de borrado, cambio de nombre, reemplazo o rotación. Conserva los bytes antes de experimentar.
Reproduce una vez mediante el watcher, worker, notebook, servicio o rotación real. No empieces con administrador, permisos, sleep, exclusiones ni reintentos ilimitados.
2. Demuestra si Python aún posee el handle
Recorre hacia atrás cada open, context manager, iterador, ZIP, imagen, PDF, libro, mapa y handler que tocó la ruta. La cadena de ruta no se cierra; el objeto de biblioteca posee el handle.
Mueve la mutación fuera de with o llama al close/shutdown documentado en finally. Un lector diferido puede devolver metadatos y seguir abierto.
3. Comprueba hijos, directorios y propietarios duplicados
Registra subprocesses, workers, pools y recursos heredados vivos. Un hijo puede conservar el objeto tras desaparecer la variable del padre; haz join o shutdown y demuestra su salida.
Para renombrar o borrar directorios, registra el directorio actual de padre e hijos y separa una doble apertura de un handle duplicado entre procesos.
4. Identifica al propietario externo sin forzar el cierre
Si el proceso actual y sus hijos están limpios, busca la ruta exacta con Microsoft Handle o Process Explorer y registra proceso, PID, cuenta y hora.
Detén o configura al propietario mediante su control soportado. No uses Handle -c como arreglo rutinario: Microsoft advierte que puede causar inestabilidad.
5. Repara un propietario y repite la carga real
Aplica el cambio mínimo: salir del contexto, cerrar el objeto, unir el hijo, usar un dueño de rotación o esperar a un propietario breve medido. Conserva bytes y reversión.
Repite dos veces la carga original. Deben pasar la operación, bytes y metadatos, liberación del propietario y el siguiente ciclo sin recaída.
