Redirigir la salida de impresión a un archivo en Python

Lakshay Kapoor 30 enero 2023
  1. Utilice la función write() para imprimir la salida a un archivo en Python
  2. Utilice la función print() para imprimir la salida a un archivo en Python
  3. Utilice sys.stdout para imprimir la salida en un archivo en Python
  4. Utilice la función contextlib.redirect_stdout() para imprimir la salida en un archivo en Python
Redirigir la salida de impresión a un archivo en Python

Hay un tipo más de tarea en el manejo de archivos que se puede realizar usando Python, es decir, redirigir la salida a un archivo externo. Básicamente, una salida estándar se puede imprimir en un archivo elegido por el propio usuario. Hay muchas formas de llevarlo a cabo.

En este tutorial, veremos algunos métodos para redirigir la salida a un archivo en Python.

Utilice la función write() para imprimir la salida a un archivo en Python

Esta es una función incorporada de Python que ayuda a escribir o agregar un texto específico en un archivo. w y a son las 2 operaciones en esta función que escribirán o agregarán cualquier texto en un archivo. w se usa cuando el usuario desea vaciar el archivo antes de escribir algo en él. Mientras que a se usa cuando el usuario solo desea agregar texto al texto existente en el archivo.

Ejemplo:

with open("randomfile.txt", "a") as o:
    o.write("Hello")
    o.write("This text will be added to the file")

Tenga en cuenta que la función open() se utiliza aquí para abrir el archivo. a en el código indica que se ha añadido texto al archivo.

Utilice la función print() para imprimir la salida a un archivo en Python

En este método, primero, llamamos a la función open() para abrir el archivo deseado. Después de eso, la función print() se usa para imprimir el texto en el archivo. Siempre es elección del usuario utilizar el operador w o el operador a.

Ejemplo:

with open("randomfile.txt", "w") as external_file:
    add_text = "This text will be added to the file"
    print(add_text, file=external_file)
    external_file.close()

Tenga en cuenta que la función close() también se utiliza para cerrar el archivo en el código anterior después de abrirlo con open(). Después de llamar a la función close(), el archivo no se puede leer y no se puede escribir nada más. Si el usuario intenta realizar algún cambio en el archivo después de llamar a la función close(), se generará un error.

Utilice sys.stdout para imprimir la salida en un archivo en Python

El módulo sys es un módulo Python integrado que el usuario utiliza para tratar con varias partes del entorno de ejecución en Python. Para utilizar sys.stdout, primero se debe importar el módulo sys.

sys.stdout se usa cuando el usuario quiere mostrar la salida directamente en la consola principal de la pantalla. La forma de la salida se puede variar, por ejemplo, puede ser una solicitud de entrada, una declaración de impresión o simplemente una expresión. En este método, imprimiremos una declaración en un archivo de texto.

Ejemplo:

import sys

file_path = "randomfile.txt"
sys.stdout = open(file_path, "w")
print("This text will be added to the file")

Tenga en cuenta que antes de utilizar sys.stdout como objeto para abrir e imprimir la declaración en el archivo de texto, el usuario debe definir una ruta definida del archivo; de lo contrario, ninguna de las operaciones se puede realizar en el archivo.

Utilice la función contextlib.redirect_stdout() para imprimir la salida en un archivo en Python

El módulo contextlib se usa generalmente con la instrucción with.

La función contextlib.redirect_stdout() ayuda a redirigir el sys.stdout a algún archivo de forma temporal mediante la configuración de un administrador de contexto.

Ejemplo:

import contextlib

file_path = "randomfile.txt"
with open(file_path, "w") as o:
    with contextlib.redirect_stdout(o):
        print("This text will be added to the file")

Como puede ver, la instrucción with se usa con las operaciones del módulo contextlib.

Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

Artículo relacionado - Python Print