logo

Cómo abrir un archivo usando la declaración with

El con La palabra clave en Python se utiliza como administrador de contexto. Como en cualquier lenguaje de programación, el uso de recursos como operaciones de archivos o conexiones de bases de datos es muy común. Pero la oferta de estos recursos es limitada. Por tanto, el principal problema radica en asegurarse de liberar estos recursos después de su uso. Si no se publican, se producirá una fuga de recursos y puede provocar que el sistema se ralentice o colapse.

Como sabemos, la función open() se usa generalmente para el manejo de archivos en Python. Pero es una práctica estándar utilizar administradores de contexto, como con palabras clave, para manejar archivos, ya que los liberará automáticamente una vez que se complete su uso.

Python con open() Sintaxis:

Sintaxis:



con open(file_path, modo, codificación) como archivo:

ruta de archivo: Es la ruta al archivo a abrir.

modo: modo de operación en el archivo. ej.: leer, escribir, etc. (representado por r, w, r+, w+, rb, wb, etc.)

codificación: lea el archivo en el formato de codificación correcto.

Ejemplo 1: Ejemplo simple usando la declaración with

Ya tenemos un nombre de archivo. geeksforgeeks.txt en nuestro sistema, y ​​tiene los siguientes datos:

geeksforgeeks,txt

Ahora abriremos el archivo y leeremos su contenido usando la instrucción open():

Python3

trabajo de computacion




with>open>(>'geeksforgeeks.txt'>,>'r'>) as gfg_file:> >file_content>=> gfg_file.read()> >print>(file_content)>

>

>

Producción:

GeeksForGeeks is best for DSA>

Nota: Aquí hemos utilizado el modo como r para leer los datos, porque el archivo de destino tiene datos de texto. En caso de que estemos leyendo algún archivo binario, debemos usar rb como el modo.

Ejemplo 2: También podemos utilizar el con declaración para agregar o escribir datos en el archivo.

Agregaremos la cadena ¡Hola frikis! a nuestro archivo geeksforgeeks.txt.

Python3




ángulos adyacentes
# appending string to file> with>open>(>'geeksforgeeks.txt'>,>'a'>) as gfg_file:> >gfg_file.write(>' Hello Geeks!'>)> > # reading the file contents> # to verify if successfully appended the data> with>open>(>'geeksforgeeks.txt'>,>'r'>) as gfg_file:> >content>=> gfg_file.read()> >print>(content)>

>

>

Producción:

GeeksForGeeks is best for DSA Hello Geeks!>

Nota: Aquí hemos usado a como modo de abrir el archivo, esto se debe a que queremos agregar datos al archivo. En cambio, si quisiéramos sobrescribir los datos del archivo, usaríamos el En modo.

Ejemplo 3: uso de una declaración anidada con apertura para abrir varios archivos

Cómo abrir un archivo usando la declaración with

enlaces.txt

Hemos definido un enlaces.txt archivo que contiene algunos enlaces aleatorios. abriremos el geeksforgeeks.txt archivo mencionado anteriormente y agregue el contenido del archivo de enlaces en el geeksforgeeks.txt archivo.

Python3




# appending string to file> with>open>(>'geeksforgeeks.txt'>,>'a'>) as gfg_file:> >gfg_file.write(>' Hello Geeks!'>)> >with>open>(>'links.txt'>,>'r'>) as links_file:> >lines>=> links_file.readlines()> >gfg_file.writelines(lines)>

>

>

geeksforgeeks.txt Contenido del archivo después de la modificación:

Cómo abrir un archivo usando la declaración with

geeksforgeeks,txt

Aquí podemos ver que el contenido del enlaces.txt El archivo ha sido añadido al geeksforgeeks.txt archivo después de ejecutar el script.

Diferencia de usar open() vs con open()

Aunque la función de usar abierto() y con abierto() es exactamente igual pero hay algunas diferencias importantes:

  • Usando open() podemos usar el controlador de archivos siempre que el archivo no se haya cerrado explícitamente usando file_handler.cerrar() , pero en caso de usarlo con el administrador de contexto open(), no podemos usar un controlador de archivos fuera del bloque with. subirá ValueError: operación de E/S en un archivo cerrado en ese caso.
  • Al usar open() necesitamos cerrar explícitamente una instancia de archivo abierta; de lo contrario, otras partes del código pueden sufrir errores al abrir el mismo archivo. Con open() el cierre del archivo lo maneja el administrador de contexto.
  • El uso de la declaración de contexto open() hace que el código esté más ordenado, ya que podemos separar fácilmente entre bloques de código por diferencia en sangrías. En el caso de open(), es posible que no podamos cerrar la instancia del archivo, lo que puede provocar pérdidas de memoria y otros errores de operación de E/S.