Python 3: E / S de archivos

Este capítulo cubre todas las funciones básicas de E / S disponibles en Python 3. Para obtener más funciones, consulte la documentación estándar de Python.

Imprimir en la pantalla

La forma más sencilla de producir resultados es utilizando la declaración de impresión , donde puede pasar cero o más expresiones separadas por comas. Esta función convierte las expresiones que pasa en una cadena y escribe el resultado en la salida estándar de la siguiente manera:

#!/usr/bin/python3

print ("Python is really a great language,", "isn't it?")

Esto produce el siguiente resultado en su pantalla estándar:

Python is really a great language, isn't it?

Lectura de entrada de teclado

Python 2 tiene dos funciones integradas para leer datos de la entrada estándar, que de forma predeterminada proviene del teclado. Estas funciones soninput() y raw_input()

En Python 3, la función raw_input () está obsoleta. Además, las funciones input () leen datos del teclado como una cadena, independientemente de si están entre comillas ('' o "") o no.

La función de entrada

los input([prompt]) La función es equivalente a raw_input, excepto que asume que la entrada es una expresión válida de Python y le devuelve el resultado evaluado.

#!/usr/bin/python3

>>> x = input("something:")
something:10

>>> x
'10'

>>> x = input("something:")
something:'10' #entered data treated as string with or without ''

>>> x
"'10'"

Abrir y cerrar archivos

Hasta ahora, ha estado leyendo y escribiendo en la entrada y salida estándar. Ahora veremos cómo usar archivos de datos reales.

Python proporciona funciones y métodos básicos necesarios para manipular archivos de forma predeterminada. Puede realizar la mayor parte de la manipulación de archivos utilizando unfile objeto.

La función abierta

Antes de poder leer o escribir un archivo, debe abrirlo utilizando la función open () incorporada de Python. Esta función crea unafile object, que se utilizaría para llamar a otros métodos de soporte asociados con él.

Sintaxis

file object = open(file_name [, access_mode][, buffering])

Aquí están los detalles de los parámetros:

  • file_name - El argumento file_name es un valor de cadena que contiene el nombre del archivo al que desea acceder.

  • access_mode- El access_mode determina el modo en el que se debe abrir el archivo, es decir, leer, escribir, añadir, etc. A continuación, en la tabla, se proporciona una lista completa de valores posibles. Este es un parámetro opcional y el modo de acceso a archivos predeterminado es lectura (r).

  • buffering- Si el valor de almacenamiento en búfer se establece en 0, no se realiza ningún almacenamiento en búfer. Si el valor de almacenamiento en búfer es 1, se realiza el almacenamiento en búfer de línea al acceder a un archivo. Si especifica el valor de almacenamiento en búfer como un número entero mayor que 1, la acción de almacenamiento en búfer se realiza con el tamaño de búfer indicado. Si es negativo, el tamaño del búfer es el predeterminado del sistema (comportamiento predeterminado).

Aquí hay una lista de los diferentes modos de abrir un archivo:

No Señor. Modo y descripción
1

r

Abre un archivo solo para lectura. El puntero de archivo se coloca al principio del archivo. Este es el modo por defecto.

2

rb

Abre un archivo para lectura solo en formato binario. El puntero de archivo se coloca al principio del archivo. Este es el modo por defecto.

3

r+

Abre un archivo para leer y escribir. El puntero de archivo colocado al principio del archivo.

4

rb+

Abre un archivo para lectura y escritura en formato binario. El puntero de archivo colocado al principio del archivo.

5

w

Abre un archivo solo para escritura. Sobrescribe el archivo si existe. Si el archivo no existe, crea un nuevo archivo para escribir.

6

wb

Abre un archivo para escribir solo en formato binario. Sobrescribe el archivo si existe. Si el archivo no existe, crea un nuevo archivo para escribir.

7

w+

Abre un archivo para escribir y leer. Sobrescribe el archivo existente si el archivo existe. Si el archivo no existe, crea un nuevo archivo para leer y escribir.

8

wb+

Abre un archivo para escribir y leer en formato binario. Sobrescribe el archivo existente si el archivo existe. Si el archivo no existe, crea un nuevo archivo para leer y escribir.

9

a

Abre un archivo para adjuntar. El puntero de archivo está al final del archivo si el archivo existe. Es decir, el archivo está en modo adjuntar. Si el archivo no existe, crea un nuevo archivo para escribir.

10

ab

Abre un archivo para agregar en formato binario. El puntero de archivo está al final del archivo si el archivo existe. Es decir, el archivo está en modo adjuntar. Si el archivo no existe, crea un nuevo archivo para escribir.

11

a+

Abre un archivo para agregar y leer. El puntero de archivo está al final del archivo si el archivo existe. El archivo se abre en modo anexar. Si el archivo no existe, crea un nuevo archivo para lectura y escritura.

12

ab+

Abre un archivo para agregar y leer en formato binario. El puntero de archivo está al final del archivo si el archivo existe. El archivo se abre en modo anexar. Si el archivo no existe, crea un nuevo archivo para lectura y escritura.

Los atributos del objeto de archivo

Una vez que se abre un archivo y tiene un objeto de archivo , puede obtener información diversa relacionada con ese archivo.

Aquí hay una lista de todos los atributos relacionados con un objeto de archivo:

No Señor. Atributo y descripción
1

file.closed

Devuelve verdadero si el archivo está cerrado, falso en caso contrario.

2

file.mode

Devuelve el modo de acceso con el que se abrió el archivo.

3

file.name

Devuelve el nombre del archivo.

Note - el atributo softspace no es compatible con Python 3.x

Ejemplo

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)
print ("Closed or not : ", fo.closed)
print ("Opening mode : ", fo.mode)
fo.close()

Esto produce el siguiente resultado:

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb

El método close ()

El método close () de un objeto de archivo elimina cualquier información no escrita y cierra el objeto de archivo, después de lo cual no se puede escribir más.

Python cierra automáticamente un archivo cuando el objeto de referencia de un archivo se reasigna a otro archivo. Es una buena práctica utilizar el método close () para cerrar un archivo.

Sintaxis

fileObject.close();

Ejemplo

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)

# Close opened file
fo.close()

Esto produce el siguiente resultado:

Name of the file:  foo.txt

Leer y escribir archivos

El objeto de archivo proporciona un conjunto de métodos de acceso para hacernos la vida más fácil. Veríamos cómo usarread() y write() métodos para leer y escribir archivos.

El método write ()

los write()El método escribe cualquier cadena en un archivo abierto. Es importante tener en cuenta que las cadenas de Python pueden tener datos binarios y no solo texto.

El método write () no agrega un carácter de nueva línea ('\ n') al final de la cadena -

Sintaxis

fileObject.write(string);

Aquí, el parámetro pasado es el contenido que se escribirá en el archivo abierto.

Ejemplo

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "w")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opend file
fo.close()

El método anterior crearía un archivo foo.txt y escribiría contenido dado en ese archivo y finalmente cerraría ese archivo. Si abriera este archivo, tendría el siguiente contenido:

Python is a great language.
Yeah its great!!

El método read ()

los read()El método lee una cadena de un archivo abierto. Es importante tener en cuenta que las cadenas de Python pueden tener datos binarios. además de los datos de texto.

Sintaxis

fileObject.read([count]);

Aquí, el parámetro pasado es el número de bytes que se leerán del archivo abierto. Este método comienza a leer desde el principio del archivo y si falta el recuento , intenta leer tanto como sea posible, tal vez hasta el final del archivo.

Ejemplo

Tomemos un archivo foo.txt , que creamos arriba.

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Close opened file
fo.close()

Esto produce el siguiente resultado:

Read String is :  Python is

Posiciones de archivo

El método tell () le dice la posición actual dentro del archivo; en otras palabras, la siguiente lectura o escritura ocurrirá en esa cantidad de bytes desde el principio del archivo.

El método seek (offset [, from]) cambia la posición actual del archivo. losoffsetEl argumento indica el número de bytes que se moverán. losfrom El argumento especifica la posición de referencia desde donde se moverán los bytes.

Si desde se establece en 0, el comienzo del archivo se utiliza como posición de referencia. Si se establece en 1, la posición actual se utiliza como posición de referencia. Si se establece en 2, el final del archivo se tomará como posición de referencia.

Ejemplo

Tomemos un archivo foo.txt , que creamos arriba.

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Check current position
position = fo.tell()
print ("Current file position : ", position)

# Reposition pointer at the beginning once again
position = fo.seek(0, 0)
str = fo.read(10)
print ("Again read String is : ", str)

# Close opened file
fo.close()

Esto produce el siguiente resultado:

Read String is :  Python is
Current file position :  10
Again read String is :  Python is

Cambiar el nombre y eliminar archivos

Pitón os El módulo proporciona métodos que le ayudan a realizar operaciones de procesamiento de archivos, como cambiar el nombre y eliminar archivos.

Para usar este módulo, primero debe importarlo y luego puede llamar a cualquier función relacionada.

El método rename ()

los rename() El método toma dos argumentos, el nombre de archivo actual y el nombre de archivo nuevo.

Sintaxis

os.rename(current_file_name, new_file_name)

Ejemplo

A continuación se muestra un ejemplo para cambiar el nombre de un archivo existente test1.txt :

#!/usr/bin/python3
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

El método remove ()

Puedes usar el remove() método para eliminar archivos proporcionando el nombre del archivo que se eliminará como argumento.

Sintaxis

os.remove(file_name)

Ejemplo

A continuación se muestra un ejemplo para eliminar un archivo existente test2.txt :

#!/usr/bin/python3
import os

# Delete file test2.txt
os.remove("text2.txt")

Directorios en Python

Todos los archivos están contenidos en varios directorios y Python no tiene problemas para manejarlos también. losos El módulo tiene varios métodos que le ayudan a crear, eliminar y cambiar directorios.

El método mkdir ()

Puedes usar el mkdir() método del osmódulo para crear directorios en el directorio actual. Debe proporcionar un argumento a este método, que contiene el nombre del directorio que se creará.

Sintaxis

os.mkdir("newdir")

Ejemplo

A continuación se muestra un ejemplo para crear una prueba de directorio en el directorio actual:

#!/usr/bin/python3
import os

# Create a directory "test"
os.mkdir("test")

El método chdir ()

Puede usar el método chdir () para cambiar el directorio actual. El método chdir () toma un argumento, que es el nombre del directorio que desea convertir en el directorio actual.

Sintaxis

os.chdir("newdir")

Ejemplo

A continuación se muestra un ejemplo para ir al directorio "/ home / newdir":

#!/usr/bin/python3
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

El método getcwd ()

los getcwd() El método muestra el directorio de trabajo actual.

Sintaxis

os.getcwd()

Ejemplo

A continuación se muestra un ejemplo para dar el directorio actual:

#!/usr/bin/python3
import os

# This would give location of the current directory
os.getcwd()

El método rmdir ()

los rmdir() El método elimina el directorio, que se pasa como argumento en el método.

Antes de eliminar un directorio, se debe eliminar todo su contenido.

Sintaxis

os.rmdir('dirname')

Ejemplo

A continuación se muestra un ejemplo para eliminar el directorio "/ tmp / test". Es necesario proporcionar el nombre completo del directorio; de lo contrario, buscaría ese directorio en el directorio actual.

#!/usr/bin/python3
import os

# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )

Métodos relacionados con archivos y directorios

Hay tres fuentes importantes, que proporcionan una amplia gama de métodos de utilidad para manejar y manipular archivos y directorios en los sistemas operativos Windows y Unix. Son los siguientes:

  • Métodos de objeto de archivo

    los file El objeto proporciona funciones para manipular archivos.

  • Métodos de objetos del SO

    Esto proporciona métodos para procesar archivos y directorios.