Я признанный нуб в Python. Я написал небольшой регистратор, который берет данные с последовательного порта и записывает их в файл журнала. У меня есть небольшая процедура, которая открывает файл для добавления, записывает, затем закрывает. Я подозреваю, что это может быть не лучший способ сделать это, но это то, что я понял до сих пор.
Я хотел бы, чтобы он автоматически выполнял ротацию журнала в 00:00 UTC, но пока мои попытки сделать это с помощью RotatingFileHandler не увенчались успехом.
Вот как выглядит код:
import time, serial, logging, logging.handlers,os,sys
from datetime import *
CT12 = serial.Serial()
CT12.port = "/dev/ct12k"
CT12.baudrate = 2400
CT12.parity = 'E'
CT12.bytesize = 7
CT12.stopbits = 1
CT12.timeout = 3
logStart = datetime.now()
dtg = datetime.strftime(logStart, '%Y-%m-%d %H:%M:%S ')
ctlA = unichr(1)
bom = unichr(2)
eom = unichr(3)
bel = unichr(7)
CT12Name = [ctlA, 'CT12-NWC-test']
CT12Header = ['-Ceilometer Logfile \r\n', '-File created: ', dtg, '\r\n']
def write_ceilo ( text ) :
f = open ('/data/CT12.log', 'a')
f.write (text)
f.close ()
write_ceilo(''.join(CT12Header))
CT12.open()
discard = CT12.readlines()
#print (discard)
while CT12.isOpen():
response = CT12.readline()
if len(response) >= 3:
if response[0] == '\x02' :
now=datetime.now()
dtg=datetime.strftime(now, '-%Y-%m-%d %H:%M:%S\r\n')
write_ceilo(dtg)
write_ceilo(''.join(CT12Name))
write_ceilo(response)
Что я могу сделать, чтобы это вращалось автоматически, проставляя либо дату вращения, либо серийный номер для идентификации. Я не собираюсь менять какие-либо из них, просто веду ежедневный журнал данных. (или, может быть, почасовой файл?)