Actualmente tengo un bucle que intenta encontrar un nombre de archivo sin usar agregando sufijos a una cadena de nombre de archivo. Una vez que no puede encontrar un archivo, usa el nombre que no pudo abrir un nuevo archivo con ese nombre. El problema es que este código se usa en un sitio web y puede haber múltiples intentos de hacer lo mismo al mismo tiempo, por lo que existe una condición de carrera.Cómo creo un archivo en python sin sobreescribir un archivo existente
¿Cómo puedo evitar que python sobrescriba un archivo existente, si se crea entre el momento de la comprobación y el momento de la apertura en el otro hilo?
Puedo minimizar la posibilidad de aleatorizar los sufijos, pero la posibilidad ya se ha minimizado en función de las partes de la ruta de acceso. Quiero eliminar esa posibilidad con una función que se pueda contar, crear este archivo SOLAMENTE si no existe.
Puedo usar las funciones de win32 para hacer esto, pero quiero que esto funcione en plataforma cruzada porque al final se alojará en Linux.
Si tuviera que hacer algo así, usaría un nombre de archivo predefinido y anexaría la fecha/hora actual; de ese modo, se garantizará un nombre de archivo único independientemente. –
La fecha está actualmente en el nombre del archivo, el problema está en un servidor web muy cargado, fácilmente podría tener 2 solicitudes en el mismo segundo. – boatcoder
Use uuid.uuid1() para crear archivos con nombres globalmente únicos. – hughdbrown