Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

E/S de archivo de Python

E/S de archivos de Python

En este tutorial, aprenderá sobre las operaciones de archivos de Python. Más específicamente, abrir un archivo, leerlo, escribirlo, cerrarlo y varios métodos de archivo que debe tener en cuenta.

Video:Leer y escribir archivos en Python

Archivos

Los archivos son ubicaciones con nombre en el disco para almacenar información relacionada. Se utilizan para almacenar datos de forma permanente en una memoria no volátil (por ejemplo, un disco duro).

Dado que la memoria de acceso aleatorio (RAM) es volátil (que pierde sus datos cuando se apaga la computadora), usamos archivos para el uso futuro de los datos almacenándolos permanentemente.

Cuando queremos leer o escribir en un archivo, primero debemos abrirlo. Cuando hayamos terminado, debe cerrarse para que se liberen los recursos que están vinculados con el archivo.

Por lo tanto, en Python, una operación de archivo se lleva a cabo en el siguiente orden:

  1. Abrir un archivo
  2. Leer o escribir (realizar operación)
  3. Cerrar el archivo

Apertura de archivos en Python

Python tiene un open() incorporado Función para abrir un archivo. Esta función devuelve un objeto de archivo, también llamado identificador, ya que se usa para leer o modificar el archivo en consecuencia.

>>> f = open("test.txt")    # open file in current directory
>>> f = open("C:/Python38/README.txt")  # specifying full path

Podemos especificar el modo al abrir un archivo. En modo, especificamos si queremos leer r , escribe w o agregar a al archivo También podemos especificar si queremos abrir el archivo en modo texto o en modo binario.

El valor predeterminado es leer en modo texto. En este modo, obtenemos cadenas cuando leemos del archivo.

Por otro lado, el modo binario devuelve bytes y este es el modo que se debe usar cuando se trata de archivos que no son de texto, como imágenes o archivos ejecutables.

Modo Descripción
r Abre un archivo para lectura. (predeterminado)
w Abre un archivo para escritura. Crea un nuevo archivo si no existe o trunca el archivo si existe.
x Abre un archivo para creación exclusiva. Si el archivo ya existe, la operación falla.
a Abre un archivo para agregarlo al final del archivo sin truncarlo. Crea un nuevo archivo si no existe.
t Se abre en modo de texto. (predeterminado)
b Se abre en modo binario.
+ Abre un archivo para actualizar (lectura y escritura)
f = open("test.txt")      # equivalent to 'r' or 'rt'
f = open("test.txt",'w')  # write in text mode
f = open("img.bmp",'r+b') # read and write in binary mode

A diferencia de otros idiomas, el carácter a no implica el número 97 hasta que se codifica usando ASCII (u otras codificaciones equivalentes).

Además, la codificación predeterminada depende de la plataforma. En Windows, es cp1252 pero utf-8 en Linux.

Por lo tanto, no debemos confiar también en la codificación predeterminada o, de lo contrario, nuestro código se comportará de manera diferente en diferentes plataformas.

Por lo tanto, cuando se trabaja con archivos en modo texto, se recomienda especificar el tipo de codificación.

f = open("test.txt", mode='r', encoding='utf-8')

Cierre de archivos en Python

Cuando terminemos de realizar operaciones en el archivo, debemos cerrar correctamente el archivo.

Cerrar un archivo liberará los recursos que estaban vinculados con el archivo. Se hace usando el close() método disponible en Python.

Python tiene un recolector de basura para limpiar objetos sin referencia, pero no debemos confiar en él para cerrar el archivo.

f = open("test.txt", encoding = 'utf-8')
# perform file operations
f.close()

Este método no es del todo seguro. Si ocurre una excepción cuando estamos realizando alguna operación con el archivo, el código sale sin cerrar el archivo.

Una forma más segura es usar un bloque try...finally.

try:
   f = open("test.txt", encoding = 'utf-8')
   # perform file operations
finally:
   f.close()

De esta manera, garantizamos que el archivo se cierre correctamente incluso si se genera una excepción que hace que se detenga el flujo del programa.

La mejor manera de cerrar un archivo es usando el with declaración. Esto asegura que el archivo se cierre cuando el bloque dentro del with se sale de la declaración.

No necesitamos llamar explícitamente al close() método. Se realiza internamente.

with open("test.txt", encoding = 'utf-8') as f:
   # perform file operations

Escribir en archivos en Python

Para escribir en un archivo en Python, debemos abrirlo en write w , agregue a o creación exclusiva x modo.

Debemos tener cuidado con el w modo, ya que se sobrescribirá en el archivo si ya existe. Debido a esto, todos los datos anteriores se borran.

La escritura de una cadena o secuencia de bytes (para archivos binarios) se realiza mediante el write() método. Este método devuelve el número de caracteres escritos en el archivo.

with open("test.txt",'w',encoding = 'utf-8') as f:
   f.write("my first file\n")
   f.write("This file\n\n")
   f.write("contains three lines\n")

Este programa creará un nuevo archivo llamado test.txt en el directorio actual si no existe. Si existe, se sobrescribe.

Debemos incluir los caracteres de nueva línea nosotros mismos para distinguir las diferentes líneas.


Lectura de archivos en Python

Para leer un archivo en Python, debemos abrir el archivo en lectura r modo.

Hay varios métodos disponibles para este propósito. Podemos usar el read(size) método para leer en el tamaño numero de datos Si el tamaño el parámetro no está especificado, lee y regresa hasta el final del archivo.

Podemos leer el text.txt archivo que escribimos en la sección anterior de la siguiente manera:

>>> f = open("test.txt",'r',encoding = 'utf-8')
>>> f.read(4)    # read the first 4 data
'This'

>>> f.read(4)    # read the next 4 data
' is '

>>> f.read()     # read in the rest till end of file
'my first file\nThis file\ncontains three lines\n'

>>> f.read()  # further reading returns empty sting
''

Podemos ver que el read() método devuelve una nueva línea como '\n' . Una vez que se llega al final del archivo, obtenemos una cadena vacía en la lectura adicional.

Podemos cambiar nuestro cursor de archivo actual (posición) usando el seek() método. Del mismo modo, el tell() método devuelve nuestra posición actual (en número de bytes).

>>> f.tell()    # get the current file position
56

>>> f.seek(0)   # bring file cursor to initial position
0

>>> print(f.read())  # read the entire file
This is my first file
This file
contains three lines

Podemos leer un archivo línea por línea usando un bucle for. Esto es eficiente y rápido.

>>> for line in f:
...     print(line, end = '')
...
This is my first file
This file
contains three lines

En este programa, las líneas en el propio archivo incluyen un carácter de nueva línea \n . Entonces, usamos el parámetro final del print() función para evitar dos saltos de línea al imprimir.

Alternativamente, podemos usar el readline() método para leer líneas individuales de un archivo. Este método lee un archivo hasta la nueva línea, incluido el carácter de nueva línea.

>>> f.readline()
'This is my first file\n'

>>> f.readline()
'This file\n'

>>> f.readline()
'contains three lines\n'

>>> f.readline()
''

Por último, el readlines() El método devuelve una lista de líneas restantes de todo el archivo. Todos estos métodos de lectura devuelven valores vacíos cuando se alcanza el final del archivo (EOF).

>>> f.readlines()
['This is my first file\n', 'This file\n', 'contains three lines\n']

Métodos de archivo de Python

Hay varios métodos disponibles con el objeto de archivo. Algunos de ellos se han utilizado en los ejemplos anteriores.

Aquí está la lista completa de métodos en modo texto con una breve descripción:

Método Descripción
cerrar() Cierra un archivo abierto. No tiene efecto si el archivo ya está cerrado.
separar() Separa el búfer binario subyacente del TextIOBase y lo devuelve.
archivo() Devuelve un número entero (descriptor de archivo) del archivo.
vaciar() Vacía el búfer de escritura del flujo de archivos.
isatty() Devuelve True si el flujo de archivos es interactivo.
leer(n ) Lee como máximo n caracteres del archivo. Lee hasta el final del archivo si es negativo o None .
legible() Devuelve True si se puede leer el flujo de archivos.
readline(n =-1) Lee y devuelve una línea del archivo. Lee como máximo n bytes si se especifica.
líneas de lectura(n =-1) Lee y devuelve una lista de líneas del archivo. Lee como máximo n bytes/caracteres si se especifica.
buscar(desplazamiento ,desde =SEEK_SET ) Cambia la posición del archivo a offset bytes, en referencia a desde (inicio, actual, fin).
buscable() Devuelve True si el flujo de archivos admite el acceso aleatorio.
decir() Devuelve la ubicación actual del archivo.
truncar(tamaño =None ) Cambia el tamaño del flujo de archivos a tamaño bytes Si tamaño no se especifica, cambia el tamaño a la ubicación actual.
escribible() Devuelve True si se puede escribir en el flujo de archivos.
escribir(s ) Escribe la cadena s al archivo y devuelve el número de caracteres escritos.
escribir líneas(líneas ) Escribe una lista de líneas al archivo.

python

  1. C Entrada Salida (E/S)
  2. Tipos de datos de Python
  3. Operadores de Python
  4. Lista de Python
  5. Diccionario de Python
  6. E/S de archivo de Python
  7. Python comprueba si el archivo existe | Cómo comprobar si existe un directorio en Python
  8. Python JSON:codificar (volcados), decodificar (cargas) y leer archivos JSON
  9. C - E/S de archivo
  10. C# - E/S de archivos
  11. Python - E/S de archivos