Saltar al contenido

Leer y escribir archivos en Python

Visión general

Cuando trabaja con Python, no necesita importar una biblioteca para leer y escribir en archivos. Se maneja de forma nativa en el idioma, aunque de una manera única.

Lo primero que deberá hacer es usar el Python incorporado abierto función de archivo para obtener un objeto de archivo.

los abierto La función abre un archivo. Es simple. Este es el primer paso para leer y escribir archivos en Python.

Cuando usa el abierto función, devuelve algo llamado objeto de archivo. Objetos de archivo contienen métodos y atributos que se pueden utilizar para recopilar información sobre el archivo que abrió. También se pueden utilizar para manipular dicho archivo.

Por ejemplo, el modo atributo de un objeto de archivo le dice en qué modo se abrió un archivo. Y el nombre atributo le dice el nombre del archivo que el objeto de archivo ha abierto.

Debes entender que un expediente y objeto de archivo son dos cosas completamente separadas, pero relacionadas.

Tipos de archivo

Lo que puede conocer como archivo es ligeramente diferente en Python.

En Windows, por ejemplo, un archivo puede ser cualquier elemento manipulado, editado o creado por el usuario / sistema operativo. Eso significa que los archivos pueden ser imágenes, documentos de texto, ejecutables y archivos de Excel y mucho más. La mayoría de los archivos se organizan manteniéndolos en carpetas individuales.

En Python, un archivo se clasifica como texto o binario, y la diferencia entre los dos tipos de archivos es importante.

Los archivos de texto están estructurados como una secuencia de líneas, donde cada línea incluye una secuencia de caracteres. Esto es lo que conoce como código o sintaxis.

Cada línea termina con un carácter especial, llamado EOL o Fin de la línea personaje. Hay varios tipos, pero el más común es la coma {,} o el carácter de nueva línea. Finaliza la línea actual y le dice al intérprete que ha comenzado una nueva.

También se puede usar un carácter de barra invertida, que le dice al intérprete que el siguiente carácter, que sigue a la barra, debe tratarse como una nueva línea. Este carácter es útil cuando no desea comenzar una nueva línea en el texto en sí, sino en el código.

Un archivo binario es cualquier tipo de archivo que no sea un archivo de texto. Debido a su naturaleza, los archivos binarios solo pueden ser procesados ​​por una aplicación que conozca o comprenda la estructura del archivo. En otras palabras, deben ser aplicaciones que puedan leer e interpretar binarios.

Función Open ()

Para comenzar a leer y escribir archivos en Python, debe confiar en el Python incorporado abierto función de archivo. Use open () para abrir un archivo en Python.

Como se explicó anteriormente, abierto () devolverá un objeto de archivo, por lo que se usa más comúnmente con dos argumentos.

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

Un argumento no es más que un valor que se ha proporcionado a una función, que se retransmite cuando se llama. Entonces, por ejemplo, si declaramos el nombre de un archivo como “Archivo de prueba”, ese nombre se consideraría un argumento.

La sintaxis para abrir un objeto de archivo en Python es:

file_object  = open(“filename”, “mode”) where file_object is the variable to add the file object. 

El segundo argumento que ves – modo – le dice al intérprete y al desarrollador de qué manera se utilizará el archivo.

Modo

La inclusión de un argumento de modo es opcional porque un valor predeterminado de ‘r‘se asumirá si se omite. Los ‘r‘value significa modo de lectura, que es solo uno de muchos.

Los modos son:

  • r‘- Archivo de lectura de Python. Modo de lectura que se usa cuando el archivo solo se está leyendo
  • w‘- Archivo de escritura de Python. Modo de escritura que se utiliza para editar y escribir nueva información en el archivo (cualquier archivo existente con el mismo nombre se borrará cuando se active este modo)
  • a‘- Archivo adjunto de Python. Modo Append, que se utiliza para agregar nuevos datos al final del archivo; que es nueva información se modifica automáticamente hasta el final
  • r +‘- Modo especial de lectura y escritura, que se usa para manejar ambas acciones cuando se trabaja con un archivo

Entonces, echemos un vistazo a un ejemplo rápido donde escribimos un archivo llamado “archivo de trabajo” usando el método de apertura de Python.

F = open(“workfile”,”w”) 
Print f 

Este fragmento abre el archivo llamado “archivo de trabajo” en modo de escritura para que podamos hacer cambios en él. Asegúrese de tener la ruta de archivo correcta. La información actual almacenada en el archivo también se muestra, o se imprime, para que la veamos.

Una vez hecho esto, puede pasar a llamar a las funciones de los objetos. Las dos funciones más comunes son lectura y escritura.

Python escribir en archivo

Para familiarizarnos más con los archivos de texto en Python, creemos los nuestros y hagamos algunos ejercicios adicionales.

Usando un editor de texto simple, creemos un archivo. Puedes nombrarlo como quieras, y es mejor usar algo con lo que te identifiques. En este ejemplo, usaremos un TXT Tipo de archivo, pero también puedes crear un csv expediente.

Sin embargo, para el propósito de este tutorial, llamaremos al nuevo archivo “testfile.txt”.

Una vez que se crea el nuevo archivo, estará en blanco. El siguiente paso es agregar contenido usando el método de escritura de Python.

Para manipular el archivo, escriba lo siguiente en su entorno de Python (puede copiar y pegar si lo desea):

file = open(“testfile.txt”,”w”) 
 
file.write(“Hello World”) 
file.write(“This is our new text file”) 
file.write(“and this is another line.”) 
file.write(“Why? Because we can.”) 
 
file.close() 

Naturalmente, si abre el archivo de texto, o lo mira, usando Python, verá solo el texto que le dijimos al intérprete que agregue. No agregamos ninguno nueva línea caracteres arriba, pero ciertamente puede ” n” para formatear su expediente al ver.

$ cat testfile.txt 
Hello World 
This is our new text file 
and this is another line. 
Why? Because we can.

Leer un archivo en Python

En realidad, hay varias formas de leer un archivo de texto en Python, no solo una.

Si necesita extraer una cadena que contiene todos los caracteres en el archivo, puede usar la siguiente operación de archivo Python:

file.read() 

El código completo para trabajar con este método se verá así:

file = open(“testfile.txt”, “r”) 
print file.read() 

Por favor, asegúrese de tener el expediente ruta, ya sea una ruta relativa o una ruta absoluta, o tu pitón programa no podrá abrir el expediente. La salida de ese comando mostrará todo el texto dentro del archivo, el mismo texto que le dijimos al intérprete que agregara anteriormente. No es necesario escribirlo todo de nuevo, pero si debe saberlo, se mostrará todo excepto la línea “$ cat testfile.txt”.

Otra forma de leer un archivo es llamar a un cierto número de caracteres.

Por ejemplo, con el siguiente código, el intérprete leerá los primeros cinco caracteres de los datos almacenados y los devolverá como una cadena:

file = open(“testfile.txt”, “r”)
 
print file.read(5) 

Observe cómo estamos usando lo mismo file.read() método, solo que esta vez especificamos el número de caracteres a procesar desde el archivo de entrada.

La salida para esto se verá así:

Hello 

Si desea leer un archivo línea por línea, en lugar de extraer el contenido de todo el archivo a la vez, utilice el readline() función.

¿Por qué usarías algo como esto?

Digamos que solo desea ver la primera línea del archivo, o la tercera. Ejecutarías el readline() funcionar tantas veces como sea posible para obtener los datos que estaba buscando.

Cada vez que ejecute el método, devolverá una cadena de caracteres que contiene una sola línea de información del archivo.

file = open(“testfile.txt”, “r”) 
print file.readline(): 

Esto devolvería la primera línea del archivo, así:

Hello World 

Si quisiéramos devolver solo la tercera línea en el archivo, usaríamos esto:

file = open(“testfile.txt”, “r”) 
print file.readline(3): 

Pero, ¿y si quisiéramos devolver todas las líneas del archivo, debidamente separadas? Usaría la misma función, solo que en una nueva forma. Esto se llama file.readlines() función.

file = open(“testfile.txt”, “r”) 
print file.readlines() 

El resultado que obtendría de esto es:

[‘Hello World’, ‘This is our new text file’, ‘and this is another line.’, ‘Why? Because we can.’] 

¿Observa cómo cada línea está separada en consecuencia? Tenga en cuenta que esta no es la forma ideal de mostrar a los usuarios el contenido de un archivo. Pero es excelente cuando desea recopilar información rápidamente para uso personal durante el desarrollo o la recuperación.

Bucle sobre un objeto de archivo

Cuando desee leer, o devolver, todas las líneas de un archivo de una manera más eficiente y rápida en la memoria, puede utilizar el método de bucle. La ventaja de usar este método es que el código relacionado es simple y fácil de leer.

file = open(“testfile.txt”, “r”) 
for line in file: 
print line, 

Esto devolverá:

Hello World 
This is our new text file 
and this is another line. 
Why? Because we can. 

¿Ves cuánto más simple es eso que los métodos anteriores?

Uso del método de escritura de archivos

Una cosa que notará sobre el método de escritura de archivos es que solo requiere un único parámetro, que es la cadena que desea escribir.

Este método se utiliza para agregar información o contenido a un archivo existente. Para comenzar una nueva línea después de escribir datos en el archivo, puede agregar un carácter EOL.

file = open(“testfile.txt”, “w”)

file.write(“This is a test”) 
file.write(“To add more lines.”)

file.close()

Obviamente, esto modificará nuestro archivo actual para incluir las dos nuevas líneas de texto. No es necesario mostrar la salida.

Cerrar un archivo

Cuando haya terminado de trabajar, puede utilizar el Fh.cerrar() comando para acabar con las cosas. Lo que hace esto es cerrar el archivo por completo, terminando los recursos en uso y, a su vez, liberándolos para que el sistema los implemente en otro lugar.

Es importante comprender que cuando usa el Fh.cerrar() método, cualquier intento adicional de utilizar el objeto de archivo fallará.

¿Observa cómo hemos usado esto en varios de nuestros ejemplos para finalizar la interacción con un archivo? Ésta es una buena práctica.

Manejo de archivos en Python

Para ayudarlo a comprender mejor algunos de los métodos de manejo de archivos discutidos aquí, vamos a ofrecer un script de Python con ejemplos del mundo real de cada uso. Siéntase libre de copiar el código y probarlo usted mismo en un intérprete de Python (asegúrese de tener los archivos con nombre creados y accesibles primero).

Abrir un archivo de texto:

fh = open(“hello.txt”, “r”) 

Leer un archivo de texto:

Fh = open(“hello.txt”, “r”) 
print fh.read() 

Para leer un archivo de texto una línea a la vez:

fh = open(“hello.text”, “r”) 
print fh.readline() 

Para leer una lista de líneas en un archivo de texto:

fh = open(“hello.txt”, “r”) 
print fh.readlines() 

Para escribir contenido o texto nuevo en un archivo:

fh = open(“hello.txt”, “w”) 
 
fh.write(“Put the text you want to add here”) 
fh.write(“and more lines if need be.”) 
 
fh.close() 

También puede usar esto para escribir varias líneas en un archivo a la vez (ejemplo de nueva línea de Python):

fh = open(“hello.txt”,”w”) 
lines_of_text = [“One line of text heren”, “and another line heren”, “and yet another heren”, “and so on and so forth”] 
fh.writelines(lines_of_text) 
fh.close() 

Para agregar un archivo:

fh = open(“hello.txt”, “a”) 
fh.write(“We Meet Again World”) 
fh.close 

Para cerrar un archivo por completo cuando haya terminado:

fh = open(“hello.txt”, “r”) 
print fh.read() 
fh.close() 

Con declaración

También puede trabajar con objetos de archivo utilizando la instrucción with. Está diseñado para proporcionar una sintaxis mucho más limpia y un manejo de excepciones cuando se trabaja con código. Eso explica por qué es una buena práctica utilizar la declaración with cuando corresponda.

Una ventaja de utilizar este método es que todos los archivos abiertos se cerrarán automáticamente una vez que haya terminado. Esto deja menos de qué preocuparse durante la limpieza.

Para usar la instrucción with para abrir un archivo:

with open(“filename”) as file: 

Ahora que comprende cómo llamar a esta declaración, echemos un vistazo a algunos ejemplos.

with open(“testfile.txt”) as file:  
data = file.read() 
do something with data 

También puede recurrir a otros métodos mientras usa esta declaración. Por ejemplo, puede hacer algo como recorrer un objeto de archivo:

with open(“testfile.txt”) as f: 
for line in f: 
print line, 

También notará que en el ejemplo anterior no usamos el “file.close ()”Porque la instrucción with lo llamará automáticamente al ejecutarlo. Realmente hace las cosas mucho más fáciles, ¿no?

Usando la declaración With en Python

Para comprender mejor la declaración with, echemos un vistazo a algunos ejemplos del mundo real tal como lo hicimos con las funciones de archivo.

Para escribir en un archivo usando la instrucción with:

with open(“hello.txt”, “w”) as f: 
f.write(“Hello World”) 

Para leer un archivo línea por línea, imprímalo en una lista:

with open(“hello.txt”) as f: 
data = f.readlines() 

Esto tomará todo el texto o contenido del archivo “hello.txt” y lo almacenará en una cadena llamada “datos”.

División de líneas en un archivo de texto

Como ejemplo final, exploremos una función única que le permite dividir las líneas tomadas de un archivo de texto. Lo que esto está diseñado para hacer es dividir la cadena contenida en datos variables cada vez que el intérprete encuentra un carácter de espacio.

Pero solo porque lo vamos a usar para dividir líneas después de un carácter de espacio, no significa que sea la única forma. De hecho, puede dividir su texto utilizando cualquier carácter que desee, como dos puntos, por ejemplo.

El código para hacer esto (también usando una declaración with) es:

with open(“hello.text”, “r”) as f:
data = f.readlines()
 
for line in data:
words = line.split()
print words

Si quisiera usar dos puntos en lugar de un espacio para dividir su texto, simplemente cambiaría line.split () a line.split (“:”).

La salida para esto será:

[“hello”, “world”, “how”, “are”, “you”, “today?”]
[“today”, “is”, “Saturday”]

La razón por la que las palabras se presentan de esta manera es porque se almacenan, y se devuelven, como una matriz. Asegúrese de recordar esto cuando trabaje con la función de división.

Más lectura

Documentación oficial de Python: lectura y escritura de archivos

Hoja de referencia para el manejo de archivos de Python

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.