python实现电脑自动关机


Posted in Python onJune 20, 2018

0、前言

在以前读书的时候,实验室里面要求每天都要关电脑,有时候出去玩得晚了,懒得回实验室关电脑,又没有同学帮忙。于是就想,能不能通过什么手段实现远程关闭电脑。在网上搜索一番后,决定用 python + email,实现远程关闭电脑。

1、准备

python: 3.5.2 email:163邮箱 system:Win10
安装依赖包email:在python安装目录下/Scripts下执行:pip install email
设置163邮箱的POP3/SMTP服务 : 登录163邮箱 ?> 设置 ?> POP3/SMTP/IMAP ?> 勾选POP3/SMTP服务

2、说明

执行py程序后,程序将每隔10分钟(时间可以自己设置)读取一次邮箱最新邮件,解析获得邮件主题,当主题为“关机”时,程序将关闭电脑,为“重启”时,将重启电脑。在长时间离开电脑时,可以将py程序跑起来,如果需要关机或重启,可以向邮箱发一封邮件即可

3、代码

# -*- coding:utf-8 -*-
import os
import time
import poplib
import email
from email.header import decode_header
#========================================
# 读取Email,获取Email主题
#========================================
def getEmailSubject():
  read = poplib.POP3('pop.163.com')
  read.user('xxx@163.com')# 163邮箱用户名
  read.pass_('xxx')    # 163邮箱设置中的客户端授权密码
  allEmails = read.stat() # 读取邮件信息
  topEmail = read.top(allEmails[0], 0) # 获取最新的一封邮件
  tmp = []
  # 解码邮件,存入tmp
  for s in topEmail[1]:
    try:
      tmp.append(s.decode())
    except:
      try:
        tmp.append(s.decode('gbk'))
      except:
        tmp.append(s.decode('big5'))
  message = email.message_from_string('\n'.join(tmp))
  # 获取邮件主题
  subject = decode_header(message['Subject'])
  if subject[0][1]:
    subjectDecode = subject[0][0].decode(subject[0][1])
  else:
    subjectDecode = subject[0][0]
  return subjectDecode
#=========================================
# 检查Email的主题
#=========================================
def checkEmailSubject():  
  while True:
    subject = getEmailSubject()  
    print('check subject ...')
    print('subject is ' + subject)
    if subject == '重启':
      os.system('shutdown -r -t 3')
      break    
    if subject == '关机':
      os.system('shutdown -s -t 3')
      break
    time.sleep(600) # 每10分钟检查一次

if __name__ == '__main__':
  checkEmailSubject()

4、结束语

不过自打我工作半年来,一共也就只关过3、4次电脑

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解supervisor使用教程
Nov 21 Python
Python求出0~100以内的所有素数
Jan 23 Python
python如何压缩新文件到已有ZIP文件
Mar 14 Python
PHP实现发送和接收JSON请求
Jun 07 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
Pycharm保存不能自动同步到远程服务器的解决方法
Jun 27 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
Aug 15 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
详解Python流程控制语句
Oct 28 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 Python
python3将视频流保存为本地视频文件
Jun 20 #Python
Python操作MySQL数据库的方法
Jun 20 #Python
python实现抖音视频批量下载
Jun 20 #Python
Python 类的特殊成员解析
Jun 20 #Python
python实现音乐下载的统计
Jun 20 #Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 #Python
python基于http下载视频或音频
Jun 20 #Python
You might like
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
JavaScript实现联动菜单特效
2020/01/07 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
Python入门篇之函数
2014/10/20 Python
一些Python中的二维数组的操作方法
2015/05/02 Python
python的keyword模块用法实例分析
2015/06/30 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
python创建文件备份的脚本
2018/09/11 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
Servlet的生命周期
2013/08/25 面试题
文明礼仪事迹材料
2014/01/09 职场文书
体育课课后反思
2014/04/24 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
SQL Server删除表中的重复数据
2022/05/25 SQL Server