py2exe实现python文件打包为.exe可执行程序(上篇)
off999 2025-05-14 15:50 2 浏览 0 评论
今天分享的内容为:
python程序实现发送、读取邮件来控制电脑的关机与重启(作为py2exe打包成.exe可执行程序的基础文件)
一、说明:本文介绍的是使用新浪邮箱作为例子进行讲解,代码实现如下:
# coding:utf-8
import time
import os
import poplib
import smtplib
from email.header import decode_header
from email.mime.text import MIMEText
import email
"""如何登录邮箱"""
"""按目的分为:1.是为发送邮件而登录;2.是为读取邮件而登录"""
"""先说为发送邮件而登录的操作。一般来说,登录使用SMTP,接收使用POP"""
class Mail():
"""使用python程序远程控制电脑关机或重启"""
def sendMail(self):
"""设置SMTP服务器为smtp.sina.com,实现发送邮件功能"""
sent = smtplib.SMTP('smtp.sina.com')
"""设置新浪邮箱的账号与密码"""
sent.login('195458719795@sina.com', '123456')
"""发送邮件-上述代码已实现邮箱的登录,现在需要设置
发送内容,然后发送即可"""
to = ['195458719795@sina.com', '123456']
"""MIMEText的参数代表邮件的具体内容"""
content = MIMEText('Hello,Cand!')
"""设置邮件标题"""
content['Subject'] = 'shutdown'
"""设置邮件从哪里发送"""
content['From'] = '195458719795@sina.com'
"""设置邮件要发送的地址,支持群发"""
content['To'] = ','.join(to)
"""实现发送邮件,有三个参数,需要注意各自代表什么"""
sent.sendmail('195458719795@sina.com', to,
content.as_string())
sent.close()
def readMail(self):
"""如何读取邮件"""
read = poplib.POP3('pop.sina.com')
"""设置登录账号"""
read.user('195458719795@sina.com')
"""设置登录密码"""
read.pass_('123456')
"""返回邮箱基本统计信息"""
tongji = read.stat()
"""服务器将返回由参数标识的邮件前0行内容,
最后str为一个列表,有三个元素"""
str = read.top(tongji[0], 0)
"""其中str[1],也就是str中的第2个参数为第一封邮件
的各种信息,在这里要给其进行编码"""
str2 = []
for x in str[1]:
try:
str2.append(x.decode())
except:
try:
str2.append(x.decode('gbk'))
except:
str2.append((x.decode('big5')))
"""把String的邮件转换成email.message实例"""
"""msg是把经过编码的str2转化为可识别的邮件信息,
并且每行一条信息,join用来连接字符串"""
msg = email.message_from_string('\n'.join(str2))
biaoti = decode_header(msg['subject'])
"""如果有第二个元素,说明有编码信息"""
if biaoti[0][1]:
biaoti2 = biaoti[0][0].decode(biaoti[0][1])
else:
biaoti2 = biaoti[0][0]
if biaoti2 == "shutdown":
return 0
elif biaoti2 == "restart":
return 1
else:
return 2
readMail.quit()
def reflash(self):
"""重置邮箱中最新一封邮件的标题"""
sent = smtplib.SMTP('smtp.sina.com')
sent.login('195458719795w@sina.com', '123456')
to = ['195458719795@sina.com', '123456']
content = MIMEText('Hello,Cand!')
content['Subject'] = 'reflash'
content['From'] = '195458719795@sina.com'
content['To'] = ','.join(to)
sent.sendmail('195458719795@sina.com', to,
content.as_string())
sent.close()
if __name__ == '__main__':
mail = Mail()
mail.sendMail()
time.sleep(10)
while True:
time.sleep(2)
result = mail.readMail()
if result == 0:
os.system('shutdown -s -t 5')
mail.reflash()
elif result == 1:
os.system('shutdown -r')
mail.reflash()
else:
print "do nothing!"
二、代码重要点讲解:
def sendMail(self):
发送邮件方法说明:
(1)、该方法实现了使用新浪邮箱进行发送邮件,需要设置SMTP服务器为:smtp.sina.com来实现发送邮件功能;
(2)、需要先去注册新浪邮箱,使用注册成功后邮箱账号与密码为发送邮件的登录账号;
(3)、邮件支持群发,需要注意组装接收邮件的变量的格式;
def readMail(self):
读取邮件方法说明:
(1)、该方法实现了使用新浪邮箱进行邮件的读取;
(2)、需要先去新浪邮箱设置中选择pop.sina.com进行保存,否则无权限使用;
(3)、读取邮件内容时需要对邮件内容进行编码,拼接字符串等操作,具体实现代码如上述代码所示,请仔细阅读;
def reflash(self):
重置最新一封邮件的标题方法说明:
(1)、重置的目的:是为覆盖之前发送那一封邮件的标题内容,以免影响程序的正常运行,因为不确定是新发送的邮件生
效了,还是读取之前的那封邮件的标题内容;
(2)、此处的重置并不是修改邮件的内容,而是:重新调用发送邮件方法重新发送一封不同于最新那封邮件标题内容的邮
件,从而达到重置的目的,并非真正意义上的重置;
if __name__ == '__main__':
__main__方法执行说明:
(1)、首先调用发送邮件方法发送一封邮件,等待10秒后,再调用读取邮件方法进行邮件的读取;
(2)、读取邮件内容时进行判断,如果邮件标题为:shutdown,则执行电脑的关机命令,如果邮件标题为:restart,则执行电脑的重启命令,如果邮件标题既不为:shutdown也不为restart,则打印:do nothing! 并休眠2秒后再次进行读取最新一封邮件,如此循环往复;
(3)、执行设备对象为:正在运行该程序的物理机器;
三、重点说明:
1、该python文件需要导入的包模块,需自行先安装;
2、该程序可在python2和python3环境下运行,此处代码是在python2环境下编写的,如果需要移植到python3环境下,需修改相应的语法;
3、下篇将会讲解如何将该python程序使用py2exe打包成.exe可执行程序,实现未安装python环境也能通过邮件内容对物理机电脑进行关机和 重启的操作;
三、重点说明:
1、该python文件需要导入的包模块,需自行先安装;
2、该程序可在python2和python3环境下运行,此处代码是在python2环境下编写的,如果需要移植到python3环境下,需修改相应的语法;
3、下篇将会讲解如何将该python程序使用py2exe打包成.exe可执行程序,实现未安装python环境也能通过邮件内容对物理机电脑进行关机和重启的操作;
相关推荐
- 30s带你使用Python打包exe文件,并修改其图标
-
在Python中,我们可以使用PyInstaller或cx_Freeze等工具将Python脚本打包成可执行文件(.exe),并且能够修改生成的.exe文件的图标。使用PyInstaller...
- Python一键打包为windows的exe文件,无需安装python环境即可执行
-
一、为什么要将Python打包为exe?在实际应用中,我们希望Python程序能在没有安装Python环境的电脑上直接运行。将Python代码打包为exe可执行文件,不仅能解决环境依赖问题,还便于程...
- py2exe实现python文件打包为.exe可执行程序(上篇)
-
今天分享的内容为:python程序实现发送、读取邮件来控制电脑的关机与重启(作为py2exe打包成.exe可执行程序的基础文件)一、说明:本文介绍的是使用新浪邮箱作为例子进行讲解,代码实现如下:#c...
- 如何将python程序文件打包生成一个可执行文件(exe文件)
-
在开发Python程序后,有时我们希望将其打包成一个可执行的exe文件,方便在没有Python环境的计算机上运行。下面将详细介绍使用常见工具实现这一目标的方法。安装PyInstaller...
- Python程序打包为EXE的全面指南:从入门到精通
-
引言在Python开发中,将程序打包成可执行文件(EXE)是分发应用程序的重要环节。通过打包,我们可以创建独立的可执行文件,让没有安装Python环境的用户也能运行我们的程序。本篇文章将详细介绍如何使...
- 10个你没有充分利用的令人惊叹的 Python 特性
-
Python的简单性和多功能性使其成为全球开发人员的最爱。每天有超过1000万开发者使用Python进行从网络开发、机器学习到网络脚本等各种开发,Python的功能非常强大。然而,我们中的...
- 编程语言可以用来做什么
-
1.web前端你每天浏览的网页,所看到的页面特效,均是由web前端工程师来实现的2.Java大型购物网站有关通信及网络企业大型企业级应用管理系统大型网游后台数据3.C++嵌入式三维游戏领域人工智能领域...
- 用Python进行机器学习(16)-内容总结
-
对于用Python进行机器学习的内容,到这里就要做一个阶段性总结啦,后续再写的文章就是关于深度学习的了,算是对该部分内容的进阶版。对于机器学习,我们主要介绍了五个方面的内容:第一个就是分类算法,主要包...
- 普通人如何利用python做自媒体赚收益
-
普通人利用Python做自媒体赚收益,最简单的方式是下载某些网站的视频,并利用剪影编辑视频,最后导出发布,每天可以制作个10几条,并设置好定时发布,每天如此坚持下去,一定会有所收获的...
- AI能写什么做什么?这些技能已经颠覆你的认知!
-
在ChatGPT、文心一言等AI工具爆火的今天,人工智能早已不再是科幻电影里的概念,而是实实在在地渗透进我们的生活。**AI到底能写什么?能做什么?它的边界在哪里?**让我们一探究竟!---**1....
- Python 3.14 新特性盘点,更新了些什么?
-
Python3.14.0稳定版将于2025年10月正式发布,目前已进入beta测试阶段。这意味着在往后的几个月里,3.14的新功能已冻结,不再合入新功能(除了修复问题和完善文档)。3...
- 每天一个Python库:sys模块的5个高频用法(建议收藏)
-
很多人学Python,一直卡在“写不了实用脚本”。其实,会用标准库,效率直接翻倍。今天分享的是:sys模块。这个模块虽然基础,但非常实用,下面是我亲测常用的5个功能1.获取命令行参数(自动化脚...
- Python除了做爬虫抓数据还能做什么?其实还能监视和衡量网站性能
-
借助这份对初学者友好的指南,您可以构建自己的自定义Python脚本来自动测量网站的关键速度和性能指标。 在过去的一个月中,Google宣布了许多通过关键速度和性能指标来衡量用户体验的方法。 巧...
- python究竟可以用来做些什么
-
这里就不撰述python的一些像什么“高级语言”之类的比较常规的介绍了,还是老样子,说说一些比较常用的东西吧。python是什么python,一款可编程的开源软件,很多第三方库、框架也是开源的,比如强...
- Python 实现 dubbo 协议接口自动化测试
-
前言python语言也可以实现对dubbo协议的接口进行调用与测试,可以使用python+hessian结合的方式,也可以使用python+telnet结合的方式模拟命令行的模式来实现对...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (54)
- python安装路径 (54)
- python类型转换 (75)
- python进度条 (54)
- python的for循环 (56)
- python串口编程 (60)
- python写入txt (51)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python qt (52)
- python人脸识别 (54)
- python斐波那契数列 (51)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- centos7安装python (53)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)