簡體   English   中英

將 Python 腳本的輸出重定向到文件

[英]Redirecting the output of a Python script to a file

python 腳本應該打印一些消息,並針對不同的情況多次編譯代碼。 編譯過程本身會為每種情況在屏幕上生成消息。 我打算將腳本消息的輸出和編譯過程消息全部顯示出來,並寫在日志文件中,以便我可以只查看一個文件中的任何問題。

我試過有這些行:

import sys

class Logger(object):

    def __init__(self):
        self.terminal = sys.stdout
        self.log = open("regress.log", "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)

sys.stdout = Logger()

問題在於:這僅打印來自原始 python 腳本的消息,但我嘗試從腳本內部編譯的代碼中的編譯消息未寫入文件。

我也簡單地嘗試過:python script.py > output

問題在於:輸出文件僅包含來自寫入“輸出”文件中的代碼的編譯消息。 不打印來自腳本的消息。 此外,編譯消息也不會顯示在屏幕上。

本質上,我希望將所有正常打印和已啟動命令的輸出寫入一個文件並顯示在屏幕上。

您可以從命令行執行此操作:

python script_name.py > output_name

為了做到這一點,你需要做的就是;

def log_msg(msg):
    log = open("C:/Path/to/File.log", "a")
    log.write(msg+"\n")
    log.close()

print "Error message"
log_msg("Error Message")

~~~~

下次,請記得發布您嘗試過的內容,您認為可行的內容,以及無效的內容,以及您的一些代碼。

執行此類操作的最簡單方法是使用標准日志記錄系統。

您需要附加 2 個處理程序,一個用於 sys.stdout 的 StreamHandler 和一個用於將內容存儲在磁盤中的 FileHandler。

檢查此以獲取更多信息: https : //docs.python.org/2/library/logging.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM