Existe-t-il un moyen de sauvegarder toutes les sorties imprimées dans un fichier txt en python? Disons que j'ai ces deux lignes dans mon code et que je veux enregistrer la sortie d'impression dans un fichier nommé output.txt
.
print ("Hello stackoverflow!")
print ("I have a question.")
Je veux que le fichier output.txt
contienne
Hello stackoverflow!
I have a question.
Donnez à print
un argument de mot clé file
, dont la valeur est un flux de fichier. Nous pouvons créer un flux de fichiers en utilisant la fonction open
:
print("Hello stackoverflow!", file=open("output.txt", "a"))
print("I have a question.", file=open("output.txt", "a"))
Dans la documentation Python sur print
:
L'argument
file
doit être un objet avec une méthodewrite(string)
; s'il n'est pas présent ouNone
,sys.stdout
sera utilisé.
Et la documentation pour open
:
Ouvrez
file
et retournez un objet de fichier correspondant. Si le fichier ne peut pas être ouvert, uneOSError
est déclenchée.
Le "a"
en tant que second argument de open
signifie "ajouter" - autrement dit, le contenu existant du fichier ne sera pas écrasé. Si vous souhaitez plutôt écraser le fichier, utilisez "w"
.
Vous pouvez rediriger stdout dans un fichier "output.txt":
import sys
sys.stdout = open('output.txt','wt')
print ("Hello stackoverflow!")
print ("I have a question.")
Utilisez le module de journalisation
def init_logging():
rootLogger = logging.getLogger('my_logger')
LOG_DIR = os.getcwd() + '/' + 'logs'
if not os.path.exists(LOG_DIR):
os.makedirs(LOG_DIR)
fileHandler = logging.FileHandler("{0}/{1}.log".format(LOG_DIR, "g2"))
rootLogger.addHandler(fileHandler)
rootLogger.setLevel(logging.DEBUG)
consoleHandler = logging.StreamHandler()
rootLogger.addHandler(consoleHandler)
return rootLogger
Obtenez le logger:
logger = init_logging()
Et commencez la journalisation/sortie (ing):
logger.debug('Hi! :)')