¿Qué hace python3 open “x” mode?

¿Qué hace el nuevo modo de archivo abierto “x” en python 3?

Aquí está el doc. de python 3 :

‘r’: abierto para lectura (predeterminado)

‘w’: abierto para escritura, truncando el archivo primero

‘x’: abierto para creación exclusiva, falla si el archivo ya existe

‘a’: abierto para escritura, que se agrega al final del archivo si existe

‘b’: modo binario

‘t’: modo de texto (predeterminado)

‘+’: abre un archivo de disco para actualizar (leer y escribir)

‘U’: modo de líneas nuevas universales (en desuso)

¿Qué significa “creación exclusiva”?

Pruebo el modo “x” y encuentro algunos:

  • No se puede utilizar con “r / w / a”
  • “x” solo se puede escribir. “x +” puede escribir y leer
  • El archivo no debe existir antes de open
  • El archivo será creado después de open

Entonces, “x” es similar a “w”. Pero para “x”, si el archivo existe, suba FileExistsError . Para “w”, simplemente creará un nuevo archivo / truncará el archivo existente.

Estoy en lo cierto? ¿Es esta la única diferencia?

Como ya lo dijo @Martjin, ya ha respondido su propia pregunta. Solo estaría amplificando la explicación en el manual para entender mejor el texto.

‘x’: abierto para creación exclusiva, falla si el archivo ya existe

Cuando especifique la exclusive creation , significa claramente que usaría este modo para crear exclusivamente el archivo. La necesidad de esto es necesaria cuando no truncará / agregará accidentalmente un archivo existente con cualquiera de los modos w o a .

En ausencia de esto, los desarrolladores deben tener cuidado de verificar la existencia del archivo antes de abrir el archivo para actualizarlo.

Con este modo, su código se escribiría simplemente como

 try: with open("fname", "x") as fout: #Work with your open file except FileExistsError: # Your error handling goes here 

Anteriormente, aunque su código podría haber sido escrito como

 import os.path if os.path.isfile(fname): # Your error handling goes here else: with open("fname", "w") as fout: # Work with your open file 

Sí, eso es básicamente.

Es útil si puede encontrar dos instancias de su progtwig ejecutándose al mismo tiempo, el uso del modo x asegurará que solo una creará un archivo con éxito, mientras que la otra falla.

Un ejemplo clásico son los demonios que escriben su ID de proceso en un archivo pid (para que se pueda señalar fácilmente). Al utilizar x , puede garantizar que solo se puede ejecutar un daemon a la vez, algo que es más difícil de hacer sin el modo x , y propenso a las condiciones de carrera.