我有一个来自 COM-port 的输出流,我想将其保存到文件中,每 10 秒新文件一次。
我可以像这样阅读 COM-port:
import sys
import datetime, threading
for line in sys.stdin:
print(line)
my_writing_function(line)
我需要每 10 秒更改一次文件名,所以,可能需要这样的东西:
def filename():
# if already opened -> close.
filename='{0:%Y-%m-%d_%H:%M:%S}'.format(datetime.datetime.now())
fh = open(filename, "a+")
threading.Timer(10, filename).start()
但在这种情况下,fh 应该是全局的。 也许我需要做一些标志并在写作前检查它?
谢谢。
import sys
import logging
import time
import datetime
from logging.handlers import TimedRotatingFileHandler
#----------------------------------------------------------------------
def create_timed_rotating_log(path):
logger = logging.getLogger("Rotating Log")
logger.setLevel(logging.INFO)
handler = TimedRotatingFileHandler(path, when="s", interval=2, backupCount=0)
logger.addHandler(handler)
while True:
try:
print('WHILE LOOP START')
for line in sys.stdin:
logger.info(line)
# raise Exception
except Exception as e:
print(str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + 'n' +str(e))
#----------------------------------------------------------------------
if __name__ == "__main__":
log_file = "log"
create_timed_rotating_log(log_file)