Come salvare l’output di stampa di Python in un file di testo



Come ho scoperto come esportare l’output di Python direttamente in un file di testo: finalmente!

Onestamente, ci sono passato anch’io. Scrivi del codice Python, lo esegui e tutto l’output appare sulla console. Ottimo per controlli rapidi, ma cosa succede se vuoi salvarlo per dopo? Facevo copia e incolla e poi mi rendevo conto di aver dimenticato metà del codice. Così, dopo un po’ di tentativi ed errori – soprattutto tentativi, sicuramente qualche errore – ho finalmente trovato un modo abbastanza semplice per inviare l’output del mio script direttamente in un .txtfile. Ho pensato di condividerlo, perché forse risparmierà a qualcun altro un paio d’ore di frustrazione.

Avvio dello script di base

La prima cosa da fare è avere uno script Python funzionante. Di solito creo semplicemente un main.pyfile. Inizia a scrivere il codice lì: ha senso, no? È difficile reindirizzare l’output se lo script è sospeso nell’IDE o non è nemmeno salvato. Sul mio vecchio ASUS, era sepolto nei menu Avanzati, quindi conosco la difficoltà di trovare il punto giusto! In ogni caso, esegui lo script da un terminale o dal prompt dei comandi. Su Windows, PowerShell o CMD; su Linux/Mac, solo Terminale. Assicurati di essere effettivamente nella cartella giusta quando lo esegui.

Aprire un file in modalità scrittura

Questa parte mi ha inizialmente messo in difficoltà: aprire il file di output.open()La funzione Python è tua amica. In pratica, si fa così:

with open('output.txt', 'w') as file: # your code here 

La 'w'modalità “write” indica la modalità di scrittura, quindi se il file esiste, viene prima cancellato. Se invece si desidera aggiungere a un file esistente, è possibile modificarlo in 'a'“append”, ma per ora preferisco partire da zero. Un piccolo avvertimento: su qualsiasi sistema, il file verrà creato nella directory di lavoro corrente, a meno che non si fornisca un percorso completo.È possibile verificare dove viene eseguito lo script con:

import os print(os.getcwd())

Reindirizzamento print()al file di testo

Questo è il passaggio cruciale. Normalmente, print()invia semplicemente l’output alla console. Ma se si passa un fileargomento, questo viene inserito in quel file. Ad esempio:

print('Here’s my output', file=file)

Quindi, invece di ingombrare il terminale, questo fa sì che tutto finisca in output.txt. Ho scoperto che è più facile mantenere il codice ordinato semplicemente aggiungendo l’ file=fileargomento ogni volta che si stampa. Altrimenti, se si desidera reindirizzare temporaneamente tutto lo stdout, è possibile effettuare lo swap sys.stdoutcon il proprio file handle, ma onestamente, è più complicato e l’ho provato solo una volta, alla fine non ne ho avuto bisogno qui.

Non dimenticare di chiudere il file

Questo è stato un grosso errore che continuavo a fare: dimenticare di chiudere il file. Se non lo si chiude, l’output potrebbe rimanere in un buffer e non essere mai effettivamente scritto su disco. Il bello dell’istruzione withè che gestisce questo problema automaticamente, quindi non è necessario ricordarsi di chiamare file.close().È più pulito, più sicuro e più affidabile. Una volta terminato il blocco, tutto viene salvato e chiuso correttamente.

Esecuzione dello script e controllo dell’output

Una volta impostato tutto, basta eseguire lo script con:

python main.py

oppure, se utilizzi Linux/Mac e la tua configurazione predefinita è Python 3 come python3:

python3 main.py

Dovresti vedere l’output all’interno output.txt. In caso contrario, ricontrolla il percorso dello script, assicurati che sia effettivamente in esecuzione o controlla se ci sono errori nascosti da qualche parte. A volte, i miei script si bloccavano silenziosamente o saltavano la parte di stampa, quindi ho dovuto aggiungere alcune printistruzioni per verificare che venissero eseguiti correttamente.

Solo un breve riassunto: non è scienza missilistica

  • Crea il tuo file Python ( main.py)
  • Aprire un file in modalità scrittura ( with open('output.txt', 'w') as file:)
  • Utilizzare print(..., file=file)per l’output che si desidera salvare
  • Affidati al withblocco per chiudere automaticamente il file
  • Esegui lo script e controllaoutput.txt

Onestamente, una volta capito questo, il debug è diventato molto più semplice, soprattutto durante le lunghe esecuzioni o quando avevo bisogno di log per dopo. Si poteva anche fare qualcosa python main.py > output.txtdirettamente dal terminale, ma mi piaceva questo approccio perché era un po’ più controllato nello script stesso.

Ehi, se stai generando una grande quantità di dati, aggiungerne file.flush()di tanto in tanto può garantire che vengano salvati tutti in tempo reale, senza che rimangano in memoria.È un’ottima idea se stai eseguendo streaming o logging.

Comunque, spero che questo sia d’aiuto: ci ho messo davvero troppo tempo a farlo bene, e mi stavo strappando i capelli prima di rendermi conto di quanto sia semplice. Spero che qualcun altro lo trovi utile e si risparmi un weekend di tentativi. Buona programmazione!



Questo articolo è stato utile?