第八章 文档和报告

Python Alan 6年前 (2019-03-01) 8032次浏览 0个评论 扫描二维码

精通Python自动化脚本-运维人员宝典完整目录:

第一章 Python脚本概述
第二章 Python脚本调试和性能测试
第三章 单元测试-单元测试框架的介绍
第四章 自动化常规运维活动
第五章 文件、目录和数据处理
第六章 文件存档、加密和解密
第七章 文本处理和正则表达式
第八章 文档和报告
第九章 操作各类文件
第十章 网络基础 – Socket编程
第十一章 使用Python脚本处理邮件
第十二章 使用Telnet和SSH远程监控主机
第十三章 创建图形化用户界面
第十四章 处理Apache和其它的日志文件
第十五章 SOAP和REST API通讯
第十六章 网络抓取 – 从网站上提取有用的信息
第十七章 数据收集及报表
第十八章 MySQL和SQLite数据库管理

本章中我们将学习使用Python来记录和报告信息。我们会学习如何使用Python脚本来接收输入以及如何打印输出。在Python中编写脚本更为容易。我们将学习如何格式化信息。

本章中,我们将学习如下内容:

  • 标准输入和输出
  • 信息格式化
  • 发送email

标准输入和输出

这一部分,我们将学习Python中的输入和输出。我们会学习stdin和stdout,以及input()函数。

stdin和stdout是类似文件的对象。这些对象由操作系统提供。当用户在交互会话中运行程序时,stdin作为输入,stdout是用户的终端。因为stdin是类似文件的对象,我们要从stdin中读取数据而不是在运行时读取数据。stdout用于输出。它用作表达式和print()函数的输出,以及input()函数的弹出界面。

接下来,我们来看一个stdin和stdout的示例。为此创建一个脚本stdin_stdout_example.py并编写如下内容:

运行脚本,我们将得到如下输出:

在上例中,我们使用了stdin和stdout来接收输入和展示输出。sys.stdin.readline() 会从stdin中进行读取。sys.stdout.write()会写入数据。

下面我们将学习input()和print()函数。input() 函数用于从用户接收输入。该函数有一个可选参数:提示字符串。

语法:input(prompt)

input()函数返回一个字符串值。如果需要数值,仅需在input()之前使用int关键字。可以使用如下方式:

int(input(prompt))

类似地,我们可以书写float来获取浮点值。下面我们来看一个示例。创建一个脚本 input_example.py并编写如下代码:

运行脚本,将得到如下结果:

上例中我们使用了input()函数来处理三个不同值。第一个为字符串,第二个为整数值,第三个浮点值。要对整型和浮点型使用input(),我们需要用int()和float()类型转换函数来将接收到的字符串分别转换为整型和浮点型。

print()函数用于输出数据。我们需要传入一个逗号分隔的一系列参数。在input_example.py中,要得到输出,我们使用print()函数。使用print()函数,我们可以仅通过在数据两边加上 ” ” 或 ‘ ‘来将数据写到屏幕上。如果仅输出值,只需将变量名写到print()函数中。如果想要在同一个print()函数中编写文本同时获取值,那么将两者使用逗号分隔即可。

我们来看一个print()函数的简单示例。创建脚本print_example.py并在其中编写如下内容:

运行脚本,将得到如下输出:

上例中,首先我们简单地在屏幕上打印了一个字符串。然后我们获取了变量 a 的值并在屏幕上进行了打印。最后,我们输入了 a 和 b 的值,进行想加并存储在变量 c 中,然后打印了一个语句并在同一个print()函数访问了变量值。

信息格式化

这部分中,我们将学习字符串的格式化。我们将学习格式化信息的两种方式:一种是使用string format()方法,另一种通过使用 %运算符。

首先,我们会学习使用字符串的format()方法来格式化字符串。字符串类的该方法让我们可以对值进行格式化。它也可以让我们进行变量替换。这将通过位置参数来合并元素。

下面我们将学习如何使用格式化器来进行这一格式化。调用该方法的字符串可以包含纯文本或以大括号{}分隔的替换字段。对同一字符串进行格式化时可以使用多组 {}。这一替换字段可包含参数的索引或参数的名称。运行之后,我们将得到一个以参数字符串值对字段进行替换后的字符串的拷贝。

下面我们就来看一个字符串格式化的示例。

创建一个脚本format_example.py并编写如下内容:

运行脚本如下:

上例中,我们使用了字符串类的format() 方法并通过一个和多个格式化器进行了字符串格式化。

下面,我们将学习使用%运算符来进行字符串格式化。与%运算符一同使用的还有一些格式化符号。以下是常用的一些符号:

  • %d: 数字整型
  • %s: 字符串
  • %f: 浮点数
  • %c: 字符

我们来看一个示例。创建一个脚本string_formatting.py并编写如下内容:

运行脚本,将得到如下结果:

上例中,我们使用了%运算符来格式化字符串:%d为数字,%s为字符串,%f 为浮点数。然后,我们对字符串进行了向左和向右对齐。我们还学习了如何使用%运算符截取字符串。%.4s仅显示前4个字符。然后我们创建了一个名为students的字典,并输入了Name和Address键值对。最后,我们在%运算符之后放置键名来获取这些字符串。

发送email

这一部分中,我们将学习通过Python脚本来从Gmail发送邮件。Python带有一个名为smtplib的模块实现这一功能。Python中的smtplib模块提供了SMTP客户端会话对象,用于使用SMTP监听器向互联网上的任意机器发送邮件。

我们来看一个示例。本例中,我们将从Gmail向收件人发送一封包含简单文本的email。

创建一个send_email.py脚本并编写如下内容:

译者注:测试时Gmail和 QQ 邮箱报错:smtplib.SMTPAuthenticationError,应为验证机制所致,腾讯企业邮箱正常

运行脚本如下

上例中,我们通过Gmail ID来向收件人发送邮件。变量u_name会存储你的email ID。对password变量,你可以直接使用密码赋值,也可以使用getpass模块来接收密码输入。这里我们提示输入密码。变量sender中可传入你的姓名。接着我们添加了邮件发送的多个接收人。然后,我们传入了标题、发件人和邮件的接收者。接着我们在login()中放入了u_name和password变量。再后在sendmail()中,我们传入了发件人、收件人和变量text。那么使用这个流程我们成功的发送了邮件。

下面我们再来看一个示例,发送一个带附件的邮件。本例中,我们将向接收人发送一张图片。我们将通过Gmail来发送这一邮件。创建一个脚本send_email_attachment.py并编写如下内容:

运行脚本如下:

上例中,我们向接收人发送了一张带有图片附件的邮件。我们传入了发送人和接收人的email ID。然后,为f_path赋值了作为附件发送的图片的路径。再后我们向接收人发送了以该图片为附件的邮件。

ℹ️在前面的两个例子中 – send_text.py和send_email_attachment.py – 我们通过 Gmail 发送了邮件。你可以使用任意其它的邮件提供商进行发送。要使用其它的邮件提供商,只需为host_name传入提供商的名称。当然别忘了在前面加上 smtp。在这些示例中,我们使用了smtp.gmail.com,而如果是Yahoo!,你可以使用smtp.mail.yahoo.com。因此可根据邮件提供商的不同来提供对应的主机名和端口。

总结

本章中,我们学习了标准输入和输出。我们学习了stdin和stdout如何分别进行键盘输入和用户终端输出。我们还学习了input()和print()函数。此外,我们学习了从Gmail向接收人发送邮件。我们使用普通文本以及附件分别发送了邮件。同时我们学习了使用format()方法和%运算符进行字符串格式化。

下一章中,我们会学习如何处理不同文件,如PDF, Excel和csv。

课后问题

  1. stdin和输入的区别是什么?
  2. SMTP是什么?
  3. 以下代码的输出是什么?
  4. 以下代码的输出是什么?

扩展阅读

  1. 字符串文档:https://docs.python.org/3.1/library/string.html
  2. smptplib文档: https://docs.python.org/3/library/smtplib.html
喜欢 (1)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址