Reindirizza l'output di stampa su un file in Python

Lakshay Kapoor 30 gennaio 2023
  1. Usa la funzione write() per stampare l’output su un file in Python
  2. Usa la funzione print() per stampare l’output su un file in Python
  3. Usa sys.stdout per stampare l’output su un file in Python
  4. Usa la funzione contextlib.redirect_stdout() per stampare l’output su un file in Python
Reindirizza l'output di stampa su un file in Python

C’è un altro tipo di attività nella gestione dei file che può essere eseguita utilizzando python, ovvero reindirizzare l’output su un file esterno. Fondamentalmente, uno standard output può essere stampato su un file scelto dall’utente stesso. Ci sono molti modi per farlo.

In questo tutorial vedremo alcuni metodi per reindirizzare l’output su un file in Python.

Usa la funzione write() per stampare l’output su un file in Python

Questa è una funzione Python incorporata che aiuta a scrivere o aggiungere un testo specificato in un file. w e a sono le 2 operazioni in questa funzione che scriveranno o aggiungeranno qualsiasi testo in un file. w viene utilizzato quando l’utente vuole svuotare il file prima di scriverci qualcosa. Considerando che a viene utilizzato quando l’utente vuole solo aggiungere del testo al testo esistente nel file.

Esempio:

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

Nota che la funzione open() viene utilizzata qui per aprire il file. a nel codice indica che il testo è stato aggiunto al file.

Usa la funzione print() per stampare l’output su un file in Python

In questo metodo, prima chiamiamo la funzione open() per aprire il file desiderato. Dopo che la funzione print() viene utilizzata per stampare il testo nel file. È sempre la scelta dell’utente di utilizzare l’operatore w o l’operatore a.

Esempio:

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

Nota che la funzione close() viene utilizzata anche per chiudere il file nel codice sopra dopo averlo aperto con open(). Dopo aver chiamato la funzione close(), il file non può essere letto e nient’altro può essere scritto. Se l’utente tenta di apportare modifiche al file dopo aver chiamato la funzione close(), verrà generato un errore.

Usa sys.stdout per stampare l’output su un file in Python

Il modulo sys è un modulo Python integrato che viene utilizzato dall’utente per gestire varie parti dell’ambiente di runtime in Python. Per utilizzare il sys.stdout, il modulo sys deve essere prima importato.

sys.stdout viene utilizzato quando l’utente desidera visualizzare l’output direttamente sulla console principale dello schermo. La forma dell’output può essere variata, ad esempio può essere un prompt per l’input, un’istruzione print o solo un’espressione. In questo metodo, stamperemo un’istruzione in un file di testo.

Esempio:

import sys

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

Si noti che prima di utilizzare il sys.stdout come oggetto per aprire e stampare l’istruzione nel file di testo, l’utente deve definire un percorso preciso del file, altrimenti nessuna delle operazioni può essere eseguita sul file.

Usa la funzione contextlib.redirect_stdout() per stampare l’output su un file in Python

Il modulo contextlib viene generalmente utilizzato con l’istruzione with.

La funzione contextlib.redirect_stdout() aiuta a reindirizzare il sys.stdout su un file su base temporanea impostando un gestore di contesto.

Esempio:

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")

Come puoi vedere, l’istruzione with è usata con le operazioni del modulo 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

Articolo correlato - Python Print