Cómo realizar operaciones de entrada/salida de Python en archivos con la función Open Python

Cómo realizar operaciones de entrada/salida de Python en archivos con la función Open Python

La manipulación de archivos es una operación que tarde o temprano tendremos que realizar en nuestros programas. El pitón incorporado abierto la función devuelve un archivo de archivo, que nos permite interactuar con archivos en diferentes modos: los veremos en este artículo.

En este tutorial de Python aprenderá:

  • Cómo usar la función de Python Open.
  • ¿Cuáles son los diversos modos de operación que se pueden utilizar con la función abierta de Python?.
  • Cómo interactuar con un objeto de archivo.
  • Por qué es importante cerrar un objeto de archivo y cómo hacerlo.

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema INDEPENDO DEL OS
Software python3
Otro No se requieren permisos especiales.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado
>>> - Python se ejecutará en un shell interactivo

Declaraciones de entrada y salida de Python

Hay muchas razones por las que un programa podría necesitar interactuar con los archivos: lectura de configuraciones y configuraciones que influirán en el comportamiento del programa en sí, o tal vez persistentes de datos. En este tutorial veremos cómo realizar tales tareas, utilizando la función de Python Open e interactuando con Archivo de objetos.



La función de Python Open

Antes de comenzar a leer o escribir archivos, necesitamos aprender cómo podemos acceder a ellos. La función abierta de Python abre un archivo y devuelve un archivo de archivo, elevando un Oserror excepción si no se puede acceder al recurso. La función solo tiene un argumento obligatorio, archivo, que es la cadena o objeto de byte que representa la ruta del archivo que se abrirá:

>>> fobject = open ('LinuxConfig.TXT') 
Copiar

Modo de lectura - 'R'

Abrimos el LinuxConfig.TXT archivo, y el objeto de archivo resultante ahora se hace referencia a fobjeto. Es una pitón objeto de archivo que implementa métodos como escribir y leer. ¿Qué pasa si el LinuxConfig.TXT El archivo no existía? A FilenotfoundError Se plantearía la excepción:

>>> fobject = open ('LinuxConfig.Txt ') traza (la última llamada reciente): archivo "", línea 1, en  FileNotFoundError: [Errno 2] No hay dicho archivo o directorio: 'LinuxConfig.TXT' 
Copiar

Como acabamos de decir anteriormente, el único argumento obligatorio de la función abierta de Python es archivo. Cuando se usa como en el ejemplo anterior, la función funciona en modo de texto y se abre un archivo solo para leer. El equivalente detallado de lo que hicimos anteriormente es:

>>> fobject = open ('LinuxConfig.txt ',' rt ') 
Copiar

El segundo argumento de la función es el modo. En este caso, 'RT', donde el 'r' representa leer y el 'T' Especifica que estamos operando en modo de texto. También es posible abrir archivos en modo binario, reemplazando 'T' con 'b': En este caso, el contenido de bytes, sin que se devuelva la codificación. Desde 'T' es el modo predeterminado, a partir de ahora, lo omitiremos. Para leer el contenido del archivo que podemos usar, por ejemplo, el leer método. Devolverá todo el contenido del archivo como una cadena:

>>> fobject.read () 'LinuxConfig es increíble!\norte' 
Copiar

Cuando operan en modo de lectura, cualquier intento de escribir en el archivo aumentará un IO.Operación no compatible excepción:

>>> fobject.Write ('LinuxConfig es increíble!') TraceBack (la llamada más reciente la última): archivo "", línea 1, en  IO.Operación no compatible: no es escrito 
Copiar

Obviamente, este no es el único modo disponible. Veamos a los otros.

Modo de escritura - 'W'

Al especificar 'W' como el valor del modo argumento del abierto función, si el archivo existe, es primero truncado (Se descarta todo su contenido) y luego se abre para escribir; Si el archivo no existe, se crea. En este caso usamos el escribir Método del objeto de archivo:

>>> fobject = open ('LinuxConfig.txt ',' w ') >>> fobject.escribir ('acabamos de escribir en el archivo!') 26 >>> fobject.cerca() 
Copiar

Abrimos el archivo para escribir, que usamos el escribir Método del objeto de archivo, que escribe la cadena y devuelve el número de caracteres escritos, 26 En este caso, finalmente utilizamos el cerca Método para cerrar el objeto: este paso es realmente importante, ya que la operación de escritura se vuelve efectiva solo una vez que el contenido del archivo está enjuagado (veremos la importancia de cerrar un objeto de archivo al final del tutorial). Si ahora examinamos el contenido del archivo, vemos que su contenido anterior ha sido sobrescribido y solo contiene la cadena:

'Acabamos de escribir en el archivo!'

Como sucedió anteriormente, si intentamos realizar una operación no permitida por el modo de operación, se plantea una excepción. En este caso, si intentamos leer el contenido del archivo, obtenemos el siguiente resultado:

>>> fobject = open ('LinuxConfig.txt ',' w ') >>> fobject.read () traza (la llamada más reciente la última): archivo "", línea 1, en io.Operación no compatible: no legible 
Copiar

Agregar a un archivo: 'A' Modo

¿Qué pasa si queremos agregar a un archivo, manteniendo su contenido actual?? Tenemos que usar el 'a' (agregar) modo. Cuando se usa este modo, si existe un archivo, se abre para escribir y la transmisión se coloca al final. De esta manera, se conservará el contenido anterior del archivo. Si el archivo no existe, se crea:

>>> fobject = open ('LinuxConfig.txt ',' a ') >>> fobject.escribir ('texto adjunto!') 14 >>> fobject.cerca() 
Copiar

Abrimos el archivo en 'a' modo, y escriba la cadena 'texto adjunto' en el archivo. El contenido anterior no ha sido truncado:

LinuxConfig es increíble! Texto adjunto! 

El modo 'X' - Creación exclusiva

Este modo de apertura solo está disponible en Python3. Cuando se usa, un FileExisterRor Se plantea si el archivo ya existe. Si el archivo no existe, se crea y se abre para escribir:

fileObject = Open ('LinuxConfig.Txt ',' x ') traza (la última llamada reciente): archivo "", línea 1, en  FileExistsError: [Errno 17] El archivo existe: 'LinuxConfig.TXT' 
Copiar

Cada vez que escribimos algo, se adjunta al contenido anterior, hasta que cerremos el objeto del archivo:

>>> fileObject = Open ('LinuxConfig1.txt ',' x ') >>> fileObject.Write ('LinuxConfig es increíble de nuevo \ n') >>> fileObject.escribir ('Repito: LinuxConfig es increíble!\ n ') >>> fileObject.cerca() 
Copiar

Después de ejecutar el código anterior, el nuevo contenido del archivo será:

LinuxConfig es increíble! Repito: LinuxConfig es increíble! 

El personaje '+'

Vimos los modos básicos que se pueden usar con el abierto función y cómo funcionan. Por agregar el '+' personaje para cada uno de ellos, podemos obtener nuevos comportamientos.

El modo 'R+'

Al agregar el carácter '+' al modo 'R' ('R+'), se abre un archivo tanto para leer como para escribir; Se plantea una excepción si el archivo no existe. La transmisión se coloca al comienzo del archivo, por lo que si se escribe algo, anulará el contenido anterior. Si estamos en este modo, pero aún así queremos que se agregue el nuevo contenido, reservando el existente, debemos cambiar la posición actual utilizando el buscar Método del objeto de archivo antes de escribir, de la siguiente manera:

>>> fileObject = Open ('LinuxConfig.txt ',' r+'): >>> fileObject.buscar (0,2) >>> fileObject.escribir ('este texto se agregará') >>> fileObject.cerca() 
Copiar

El buscar El método toma dos argumentos: el primero es el compensar, la segunda es la posición desde la cual se debe calcular el desplazamiento, donde 0 (El valor predeterminado si se omite este argumento) es el comienzo del archivo, 1 es el desplazamiento actual, y 2 es el final del archivo. En este caso, utilizamos una compensación de 0 desde el final del archivo, por lo tanto, avanzando al final del archivo en sí. Observe que especificar una compensación distinta de cero en este caso habría elevado un IO.Operación no compatible Excepción, ya que es imposible hacer una búsqueda no distinta de cero y sin cero.

El modo 'W+'

Este modo funciona de esta manera: el archivo se abrirá tanto para leer como para escribir. Si el archivo existe, su contenido se truncará, de lo contrario se creará el archivo. Al igual que en el ejemplo anterior, será posible leer y escribir el archivo, sin embargo, hay dos grandes diferencias: la primera es que el contenido del archivo se truncará tan pronto como se abra (y no si actúa escribe algo a it), el segundo es que el archivo se creará si no existe.



El modo 'A+'

Al especificar este modo con la función Open Python, obtenemos el siguiente comportamiento: al igual que en los ejemplos anteriores, el archivo se abre tanto para leer como para escribir, la transmisión está posicionada al final del archivo, por lo que cualquier contenido nuevo que se agrega a la existencia.

Deben tenerse en cuenta dos cosas: dado que la transmisión se coloca al final del archivo, si intentamos usar el leer Método En el objeto Archivo Para obtener el contenido actual, devolverá una cadena vacía. Para poder leer el contenido, primero debemos pasar al comienzo del archivo, utilizando el método Seek de la siguiente manera:

fileObject.buscar (0)
Copiar

La segunda cosa muy importante a notar es que al usar este modo, incluso si nos movemos al comienzo del archivo al igual que lo hicimos en el ejemplo anterior, y realizamos una escritura, el contenido existente no se pierde: el nuevo contenido Siempre se adjunta.

Cerrar el objeto de archivo

Después de que terminamos de trabajar con nuestro objeto de archivo, siempre debemos recordar cerrarlo, por múltiples razones. En primis porque algunas operaciones, como la escritura, se vuelven efectivas solo cuando el objeto de archivo está cerrado y su contenido está enjuagado, secundariamente a los recursos del sistema gratuito y para la claridad del código. Hay dos formas en que podemos cerrar un objeto de archivo: el primero es llamando al cerca Método en el objeto de archivo, como vimos anteriormente. El segundo, es usando el con declaración:

con Open ('LinuxConfig.txt ',' r ') como fileObject: content = fileObject.leer () # realizar las operaciones necesarias 
Copiar

¿Qué pasa en este caso?? Usando esta declaración, la expresión junto a con, en este caso Abrir ('LinuxConfig.txt ',' r '), se evalúa en un objeto de archivo, que admite el protocolo del administrador de contexto, ya que implementa el __ingresar__ y __salida__ métodos. El objeto de archivo está alias al alias a fileObject. Después de ejecutar el código contenido en el bloque, el __salida__ El método del objeto de archivo se llama automáticamente y el objeto de archivo está cerrado. Usar un administrador de contexto es realmente útil, porque el objeto siempre se cerrará tan pronto como terminemos de operar en él: una cosa menos para recordar.

Conclusiones

En este tutorial aprendimos a usar el Python incorporado abierto función para crear un objeto de archivo, utilizado para interactuar con un archivo. Vimos los diversos modos que se pueden pasar a la función y cómo cambian el comportamiento del objeto de archivo. Finalmente, vimos por qué es importante cerrar siempre un objeto de archivo después de terminar de trabajar con él, cómo podemos hacerlo usando el cerca método, y cómo se puede hacer automáticamente, si usamos el con declaración y un gerente de contexto. Como siempre se sugiere, puede consultar la documentación oficial para mejorar aún más su conocimiento.

Vea también nuestro tutorial de Python más extenso para más conceptos relacionados con Python o nuestros archivos de lectura y escritura con Python Guide.

Tutoriales de Linux relacionados:

  • Manejo de la entrada del usuario en scripts bash
  • Mastering Bash Script Loops
  • Archivos de configuración de Linux: los 30 principales más importantes
  • Manipulación de Big Data para la diversión y las ganancias Parte 1
  • Manipulación de Big Data para diversión y ganancias Parte 3
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Manipulación de Big Data para diversión y ganancias Parte 2
  • Cómo montar la imagen ISO en Linux