Python程序设计教程第7章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python程序设计教程第7章课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 程序设计 教程 课件
- 资源描述:
-
1、第第7章章 Python 控制电脑控制电脑在在PythonPython程序中可以程序中可以通过执行通过执行CMDCMD命令和调命令和调用用Windows APIWindows API对电脑对电脑进行控制。本章介绍进行控制。本章介绍通过通过PythonPython程序远程程序远程控制电脑的具体方法。控制电脑的具体方法。本章知识点本章知识点pCMDCMD命令命令pWindows APIWindows APIp远程控制电脑远程控制电脑pPythonPython程序执行程序执行CMDCMD命令命令pPythonPython程序调用程序调用Windows APIWindows API7.1 远程控制实例
2、的需求分析远程控制实例的需求分析本实例要实现一个远程通过网络控制电脑重启或关机的本实例要实现一个远程通过网络控制电脑重启或关机的PythonPython项目,那么简单地说,需求分析如下:项目,那么简单地说,需求分析如下:(1 1)范围:用)范围:用PythonPython开发一个远程操控电脑重启或关机开发一个远程操控电脑重启或关机的项目。的项目。(2 2)总体功能要求:能过通过该软件远程控制该软件所)总体功能要求:能过通过该软件远程控制该软件所在的电脑的重启或关机操作。在的电脑的重启或关机操作。(3 3)系统要求:开发语言使用)系统要求:开发语言使用PythonPython,并且开发出来的,并
3、且开发出来的程序能在程序能在WindowsWindows上运行上运行 本章实例的实现原理本章实例的实现原理7.2 CMD命令命令p7.2.1 7.2.1 执行执行CMDCMD命令命令p7.2.2 7.2.2 在在PythonPython程序中执行程序中执行CMDCMD命令命令7.2.1 执行执行CMD命令命令在在WindowsWindows中按下中按下WindowsWindows键键+R+R,可以打开运行窗,可以打开运行窗口口在运行窗口中输入在运行窗口中输入cmdcmd命令,然后单击命令,然后单击“确定确定”按钮,可以打开命令行窗口按钮,可以打开命令行窗口执行执行dir命令命令1date命令命
4、令datedate命令用于显示和设置当前的系统日期。命令用于显示和设置当前的系统日期。在命令行窗口中执行在命令行窗口中执行datedate命令,结果如图命令,结果如图7-47-4所示。所示。datedate命令会首先输出当前的系统日期命令会首先输出当前的系统日期,按下回车键后会要求用户输入新日期。如,按下回车键后会要求用户输入新日期。如果不希望修改,则直接按下回车键。果不希望修改,则直接按下回车键。2time命令命令timetime命令用于显示和设置当前的系统日期和时间。在命命令用于显示和设置当前的系统日期和时间。在命令行窗口中执行令行窗口中执行timetime命令,结果如图命令,结果如图7-
5、57-5所示。所示。timetime命命令会首先输出当前的系统日期和时间,按下回车键后会令会首先输出当前的系统日期和时间,按下回车键后会要求用户输入新时间。如果不希望修改,则直接按下回要求用户输入新时间。如果不希望修改,则直接按下回车键。车键。3cd命令命令pcdcd命令用于显示当前目录的名称或更改命令用于显示当前目录的名称或更改当前目录。如果直接执行当前目录。如果直接执行cdcd命令,会显命令,会显示当前目录的名称示当前目录的名称执行执行cd命令,更改当前目录命令,更改当前目录cd cd 新路径新路径p 例如,执行下面的命令可以查看例如,执行下面的命令可以查看C:python27C:pyth
6、on27的目录结构,执行结的目录结构,执行结果如图果如图7-77-7所示。所示。cd C:python27cd C:python27dirdir4ver命令命令verver命令用于显示当前命令用于显示当前WindowsWindows的版本。的版本。5copy命令命令pcopycopy命令用于将文件复制到指定的位置命令用于将文件复制到指定的位置。copycopy命令的格式如下:命令的格式如下:copy copy 要复制的文件要复制的文件 目标路径目标路径p例如,执行下面的命令可以将例如,执行下面的命令可以将uninstall.loguninstall.log复制到复制到d:d:盘。盘。copy
7、uninstall.log d:copy uninstall.log d:6shutdown命令命令pshutdownshutdown命令用于完成关机操作。例如命令用于完成关机操作。例如,执行下面的命令可以关闭计算机:,执行下面的命令可以关闭计算机:shutdown -sshutdown -sp使用使用-t-t选项可以将关闭前的超时时间设选项可以将关闭前的超时时间设置为指定的秒数。例如,执行下面的命置为指定的秒数。例如,执行下面的命令可以在令可以在1 1秒后关闭计算机:秒后关闭计算机:shutdown s t 1shutdown s t 1p使用使用-r-r选项可以重新启动计算机。选项可以重新
8、启动计算机。7运行可执行文件运行可执行文件p WindowsWindows的可执行文件包括的可执行文件包括.exe.exe、和和.bat.bat等,在命等,在命令窗口中输入可执行文件名然后回车可以在当前目录令窗口中输入可执行文件名然后回车可以在当前目录下运行该文件。也可以在命令窗口中输入中输入包含下运行该文件。也可以在命令窗口中输入中输入包含绝对路径的可执行文件名运行该文件。例如运行下面绝对路径的可执行文件名运行该文件。例如运行下面的命令可以打开的命令可以打开WindowsWindows计算器程序。计算器程序。calccalcp 运行下面的命令可以打开运行下面的命令可以打开WindowsWin
9、dows记事本程序。记事本程序。notepadnotepadp 运行下面的命令可以打开运行下面的命令可以打开WindowsWindows画图程序。画图程序。mspaintmspaint7.2.2 在在Python程序中执行程序中执行CMD命令命令p在在PythonPython程序中可以通过程序中可以通过osos模块的模块的system()system()函函数执行数执行CMDCMD命令,也可以使用命令,也可以使用subprocess.Popen()subprocess.Popen()函数也可以创建进程执函数也可以创建进程执行系统命令。行系统命令。1通过通过os.system()函数执行函数执行
10、CMD命令命令使用使用osos模块中的模块中的system()system()函数可以方便地运行其函数可以方便地运行其他程序或者脚本。其函数原型如下所示。他程序或者脚本。其函数原型如下所示。os.systemos.system(command)(command)【例例7-17-1】 使用使用os.systemos.system()()函数执行下面的函数执行下面的CMDCMD命令。命令。ping ping 代码如下:代码如下:import import ososos.systemos.system(ping )(ping )【例例7-2】p使用使用os.systemos.system()()函数
11、实现在函数实现在1 1秒后关闭电脑,秒后关闭电脑,代码如下:代码如下:import import ososos.systemos.system( shutdown /s /t 1)( shutdown /s /t 1)【例例7-3】使用使用os.systemos.system()()函数实现重启电脑,代码函数实现重启电脑,代码如下:如下:import import ososos.systemos.system( shutdown /r)( shutdown /r)2通过通过subprocess.Popen()函数执行函数执行CMD命令命令进程对象进程对象 = subprocess.Popen(
12、args, = subprocess.Popen(args, bufsize=0, executable=None, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, shell=False, cwd=None, env=None, uni
13、versal_newlines=False, universal_newlines=False, startupinfo=None, creationflags=0)startupinfo=None, creationflags=0)参数说明如下参数说明如下p argsargs:可以是字符串或者序列类型(例如列表和元组:可以是字符串或者序列类型(例如列表和元组),用于指定进程的可执行文件及其参数。),用于指定进程的可执行文件及其参数。p bufsizebufsize:指定缓冲区的大小。:指定缓冲区的大小。p executableexecutable:用于指定可执行程序。一般通过:用于指定可执行
14、程序。一般通过argsargs参参数来设置所要运行的程序。如果将参数数来设置所要运行的程序。如果将参数shellshell设为设为 TrueTrue,则,则executableexecutable用于指定程序使用的用于指定程序使用的shellshell。在。在windowswindows平台下,默认的平台下,默认的shellshell由由COMSPECCOMSPEC环境变量来指环境变量来指定,即命令窗口。定,即命令窗口。p stdinstdin:指定程序的标准输入,默认是键盘。:指定程序的标准输入,默认是键盘。p stdoutstdout:指定程序的标准输出,默认是屏幕。:指定程序的标准输出,
15、默认是屏幕。p stderrstderr:指定程序的标准错误输出,默认是屏幕。:指定程序的标准错误输出,默认是屏幕。p preexec_fnpreexec_fn:只在:只在UnixUnix平台下有效,用于指定一个可平台下有效,用于指定一个可执行对象,它将在子进程运行之前被调用。执行对象,它将在子进程运行之前被调用。p close_fdsclose_fds:在:在windowswindows平台下,如果平台下,如果close_fdsclose_fds被设被设置为置为TrueTrue,则新创建的子进程将不会继承父进程的输,则新创建的子进程将不会继承父进程的输入、输出和错误管道。入、输出和错误管道。
16、p shellshell:如果:如果shellshell被设为被设为truetrue,程序将通过,程序将通过shellshell来来执行。执行。p cwdcwd:指定进程的当前目录。:指定进程的当前目录。p envenv:指定进程的环境变量。:指定进程的环境变量。p universal_newlinesuniversal_newlines:指定是否使用统一的文本换行:指定是否使用统一的文本换行符。在不同操作系统下,文本的换行符是不一样的。符。在不同操作系统下,文本的换行符是不一样的。例如,在例如,在windowswindows下用下用/r/n /r/n 表示换行,而表示换行,而LinuxLin
17、ux下下用用 /n /n 。如果将此参数设置为。如果将此参数设置为TrueTrue,PythonPython统一把统一把这些换行符当作这些换行符当作 /n /n 来处理。来处理。p startupinfostartupinfo和和creationflagscreationflags:只在:只在windowswindows下下用效,它们将被传递给底层的用效,它们将被传递给底层的CreateProcessCreateProcess()()函数函数,用于设置进程的一些属性,例如主窗口的外观和进,用于设置进程的一些属性,例如主窗口的外观和进程的优先级等。程的优先级等。【例例7-4】import sub
18、processimport subprocessp = subprocess.Popen(dir, p = subprocess.Popen(dir, shell=True) shell=True) p.wait()p.wait()【例例7-2】的运行结果的运行结果【例例7-5】import import subprocesssubprocessimport import datetimedatetimeprint (print (datetime.datetime.nowdatetime.datetime.now()()p=p=subprocess.Popensubprocess.Popen
19、(ping localhost (ping localhost nulnul,shell=True),shell=True)print (print (程序执行中程序执行中.).)p.waitp.wait()()print(print(datetime.datetime.nowdatetime.datetime.now()()ping localhost ping localhost nulnul命令用于命令用于pingping本机,目的在于拖延时间,运本机,目的在于拖延时间,运行结果如下:行结果如下:2016-01-11 21:48:58.3790002016-01-11 21:48:58.
20、379000程序执行中程序执行中.2016-01-11 21:49:01.7670002016-01-11 21:49:01.767000可以看到,程序拖延了可以看到,程序拖延了3 3秒多。秒多。7.3 电子邮件编程电子邮件编程7.3.1 SMTP7.3.1 SMTP编程编程7.3.1 SMTP编程编程pSMTPSMTP(Simple Mail Transfer ProtocolSimple Mail Transfer Protocol,简单邮件传输协议)是一组用于由源,简单邮件传输协议)是一组用于由源地址到目的地址传送邮件的规则,可以地址到目的地址传送邮件的规则,可以控制信件的中转方式。控制
21、信件的中转方式。SMTPSMTP属于属于TCP/IPTCP/IP协议簇,通过协议簇,通过SMTPSMTP所指定的服务器所指定的服务器, ,就可就可以把以把E-mailE-mail寄到收信人的服务器上了。寄到收信人的服务器上了。本节介绍本节介绍Python SMTPPython SMTP编程的方法。编程的方法。通过通过SMTP发送发送E-mail,通常需要提供如下,通常需要提供如下信息信息p(1 1)SMTPSMTP服务器,不同的邮件提供商都服务器,不同的邮件提供商都有自己的有自己的SMTPSMTP服务器。例如新浪的服务器。例如新浪的SMTPSMTP服务器为服务器为。p(2 2)发件人)发件人E
22、-mailE-mail账号。账号。p(3 3)收件人)收件人E-mailE-mail账号。账号。p(4 4)发件人用户名(通常与)发件人用户名(通常与E-mailE-mail账号账号是对应的。例如,如果发件人是对应的。例如,如果发件人E-mailE-mail账账号为号为,则发件人用户,则发件人用户名名myemailmyemail)。)。p(5 5)发件人)发件人E-mailE-mail密码。密码。smtplib模块模块p可以使用可以使用smtplibsmtplib模块实现模块实现SMTPSMTP编程,因编程,因此在使用此在使用PythonPython发送发送E-mailE-mail时需要首先时
23、需要首先导入导入smtplibsmtplib模块,代码如下:模块,代码如下:import import smtplibsmtplib1连接到连接到 SMTP服务器服务器在发送在发送E-mailE-mail之前首先需要连接到之前首先需要连接到 SMTPSMTP服服务器,方法如下:务器,方法如下:s = s = smtplib.SMTPsmtplib.SMTP(server)(server)serverserver是要连接的是要连接的 SMTPSMTP服务器。返回值服务器。返回值s s是是SMTPSMTP服务器对象,以后就可以通过服务器对象,以后就可以通过s s与与SMTPSMTP服务器交互了。服
24、务器交互了。2执行执行EHLO命令命令p在发送在发送E-mailE-mail时,客户应该以时,客户应该以EHLOEHLO命令命令开始开始SMTPSMTP会话。如果命令成功,则服务会话。如果命令成功,则服务器返回代码器返回代码250250(通常在(通常在200200到到299299之间都之间都是正确的返回值)。是正确的返回值)。p执行执行EHLOEHLO命令的方法如下:命令的方法如下:s.ehlos.ehlo()()ps s是是SMTPSMTP服务器对象。服务器对象。ehloehlo()()方法返回一方法返回一个元组,其内容为个元组,其内容为SMTPSMTP服务器的响应。服务器的响应。元组的第元
25、组的第1 1个元素是服务器返回的代码。个元素是服务器返回的代码。【例例7-6】import import smtplibsmtplibs = s = smtplib.SMTPsmtplib.SMTP() #() #连连接到服务器接到服务器msgmsg = = s.ehlos.ehlo()()code = code = msgmsg0 #0 #返回服务器的特性返回服务器的特性print(print(msgmsg) )print(SMTPprint(SMTP的返回代码为的返回代码为 %d %(code)%d %(code)运行结果如下运行结果如下(250, bsmtp682-(250, bsmtp
展开阅读全文