目標: 要運行實驗「A」10次,每次輸入不同的數據。實驗A返回一個浮點值作爲其輸出(讓我們稱之爲結果)。 10個實驗的所有10個結果應保存在結果文件中(使用日誌記錄)。在運行實驗A時(每次)需要做很多日誌記錄。 (10)實驗的所有中間輸出應寫入(10)不同的日誌文件。如何使用python for循環中的日誌寫入特定的輸出到多個日誌文件?
換句話說, 如果我的實驗目錄是'exp_dir'。在實驗結束後應該存在一個結果(日誌)文件,用於保存每個實驗的輸出(只有輸出需要保存,沒有其他)。在運行每個實驗的過程中,我將爲exp_dir中的10個實驗中的每一個創建子目錄(exp1,exp2等),並將實驗的結果記錄在相應的子目錄中(實驗1結果應保存在exp1中子目錄)。我打算在使用for循環的單個python文件中執行此操作。
你能讓我知道如何分別進行日誌記錄嗎?這是我想什麼(而不是10個實驗我試了2個實驗)
import logging
import os
class MyLogger(object):
def __init__(self):
self.logger = logging.getLogger()
self.logger.setLevel(logging.INFO)
def activateLogFile(self, f):
d = os.path.dirname(f)
os.makedirs(d, exist_ok=True)
handler = logging.FileHandler(f)
self.logger.addHandler(handler)
def doLogging(self, fn, info):
self.activateLogFile(fn)
self.logger.info("{i}\n".format(i=info))
def run():
exp_dir = os.getcwd()
myLog.doLogging("{d}/res.log".format(d=exp_dir), "This is where results should be logged")
myLog.logger.propagate = False
for i in range(1, 3):
myLog.doLogging("{d}/exp{i}/info.log".format(i=i, d=exp_dir), "some logging")
myLog.doLogging("{d}/res.log".format(d=exp_dir), "Experiments done")
myLog = MyLogger()
if __name__ == "__main__":
run()
但一切,是在EXP2記錄也被記錄在EXP1和res.log包括所有的日誌記錄(EXP1,EXP2也)
我感謝你的幫助
爲了說清楚,問題是如何分別記錄每個實驗以及如何將每個實驗的結果保存在結果文件中。 – user1540393
您向我們展示了您想要做的事情,但您並未向我們展示您嘗試過的內容。堆棧溢出不是代碼寫入服務。在發佈問題之前,您需要展示自己的努力。你已經導入了日誌記錄,但是我們沒有看到你試圖用它做任何事情的任何地方。您是否閱讀過文檔?嘗試了一些東西,它沒有工作?編輯你的問題併發布你已經嘗試過的。不要評論你的問題;編輯問題本身並添加您的說明。 – AJNeufeld
對不起。我包含了我的代碼。 – user1540393