Python: E / S de archivos

Este capítulo cubre todas las funciones básicas de E / S disponibles en Python. 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/python

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 proporciona dos funciones integradas para leer una línea de texto de la entrada estándar, que de forma predeterminada proviene del teclado. Estas funciones son:

  • raw_input
  • input

La función raw_input

La función raw_input ([prompt]) lee una línea de la entrada estándar y la devuelve como una cadena (eliminando el salto de línea final).

#!/usr/bin/python

str = raw_input("Enter your input: ")
print "Received input is : ", str

Esto le pide que ingrese cualquier cadena y mostraría la misma cadena en la pantalla. Cuando escribí "¡Hola Python!", Su resultado es así:

Enter your input: Hello Python
Received input is :  Hello Python

La función de entrada

La función input ([prompt]) 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/python

str = input("Enter your input: ")
print "Received input is : ", str

Esto produciría el siguiente resultado contra la entrada ingresada:

Enter your input: [x*5 for x in range(2,10,2)]
Recieved input is :  [10, 20, 30, 40]

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 usando 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. Modos 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 el 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.

4

file.softspace

Devuelve falso si el espacio se requiere explícitamente con la impresión, verdadero en caso contrario.

Ejemplo

#!/usr/bin/python

# 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
print "Softspace flag : ", fo.softspace

Esto produce el siguiente resultado:

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

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/python

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

# Close opend 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 usar los métodos read () y write () para leer y escribir archivos.

El método write ()

El método write () 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/python

# Open a file
fo = open("foo.txt", "wb")
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 el 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 ()

El método read () 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/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend 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. El argumento de desplazamiento indica el número de bytes que se moverán. El argumento from especifica la posición de referencia desde donde se moverán los bytes.

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

Ejemplo

Tomemos un archivo foo.txt , que creamos arriba.

#!/usr/bin/python

# 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 opend 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 ()

El método rename () 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 el ejemplo para cambiar el nombre de un archivo existente test1.txt :

#!/usr/bin/python
import os

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

El método remove ()

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

Sintaxis

os.remove(file_name)

Ejemplo

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

#!/usr/bin/python
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 ()

Puede utilizar el método mkdir () delosmódulo para crear directorios en el directorio actual. Debe proporcionar un argumento a este método que contenga el nombre del directorio que se creará.

Sintaxis

os.mkdir("newdir")

Ejemplo

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

#!/usr/bin/python
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 el ejemplo para ir al directorio "/ home / newdir" -

#!/usr/bin/python
import os

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

El getcwd () Método

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

Sintaxis

os.getcwd()

Ejemplo

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

#!/usr/bin/python
import os

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

El rmdir () Método

El método rmdir () 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 el 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/python
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 objetos de archivo : el objeto de archivo proporciona funciones para manipular archivos.

  • Métodos de objetos del sistema operativo : proporciona métodos para procesar archivos y directorios.