Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [PYTHON] Creare log files da print

    Ciao a tutti,

    Se io volessi stampare tutto il contenuto della console su file, come bisogna procedere?
    In pratica vorrei che tutti i print oltre ad essere visualizzati su console, vengano salvati su un file di testo.

    Ho pensato a creare una stringa dove a mano a mano passo i valori dei vari print, e dopo scrivere nel file tale stringa. Ma mi sembra uno spreco, cioè faccio il lavoro due volte (ed i print sono davvero tanti); sapete consigliarmi qualche metodo più veloce?

  2. #2
    La cosa più semplice è scrivere una tua funzione che costruisca una stringa in stile print e la salvi sia sul file che sulla console:
    codice:
    def myPrint(*args):
        s=' '.join(args) + "\n"
        for i in [tuoFile, sys.stdout]:
            i.write(s)
    D'altra parte, se devi fare logging ti potrebbe convenire usare il modulo logging fornito dalla libreria standard di Python, che è molto più flessibile sia sulla gestione dell'input (puoi avere più sorgenti e livelli di log diversi) che sull'output (puoi agganciare in uscita più "dispositivi" di output, eventualmente filtrando in base al tipo di messaggio).
    Ultima modifica di MItaly; 22-10-2014 a 19:40
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Attento MItaly, hai scambiato un str con un i.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Attento MItaly, hai scambiato un str con un i.
    Ops... grazie, sistemato.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Grazie mille ho risolto per il log!
    Ho solo un piccolo problema, ossia ho queste semplici istruzioni per scrivere su file:

    codice:
    file = open("test.txt", "a")
    file.write("prova\n")
    file.write("nuova linea\n")
    file.close()
    Eseguendo il codice su windows, sia da idle, che da linea di comando, tutto ok;
    Eseguendolo invece su kubuntu, da idle 3.4, funziona: scrive su file; invece eseguendolo da terminale non segnala nessun errore, ma non scrive nulla sul file.
    Ho provato anche eseguendolo come amministratore, e sia eseguendolo con l'inteprete python3 che python2, ma nulla; sapreste aiutarmi? :/

  6. #6
    Da che directory fai partire lo script?
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Lo script si trova nella cartella Documenti, ed in teoria il test.txt dovrebbe essere nella stessa cartella appunto, ma esenguendolo da terminale nulla..

  8. #8
    Aggiungi all'inizio dello script
    codice:
    import os
    print os.getcwd()
    ed esegui il programma da terminale; cosa stampa?
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.