String
1.String(字符串)中判断字符串类型的方法,isdigit和isnumric都是判断字符串是否都是数字,是则返回true,否则返回false,那么它们有什么不同之处呢?
元组tuple
- 元组可以通过下标索引的方式来读取元素,注意索引下标从0开始
- 元组可以通过负数下标索引的方式反向读取元素
- 元组可以通过 起始:终止 方式截取一段元素,其中终止是不包含的开括号
- 元组的元素不可修改,但可删除
列表
- 元组与列表可互相转换
- 列表拷贝的意思是,将A列表的值拷贝到B列表中去
- 列表清空,不影响
- python具有切片机制,可运用在序列中
- 元组不能修改元素,可删除;列表可修改元素可删除
字典
- 用get获取指定key的value,如果参数不是key,则获取不到,在获取不到的情况下,回传一个默认值
- 字典不能修改key,只能修改value,找不到key时,就使用新的value插入到字典中去
- 字典不能删除value,因为是通过key去找的
函数
- 在python中一切皆为对象,在python中不能说是值传递或引用传递,而是分为可变对象和不可变对象。
可变对象举例:list、dict、set
不可变对象举例:strings、tuples、numbers - 模块是比包更大的范围,模块是包的集合
- 模块和包体现的是一种组织思想,有好的组织才能有好的架构设计
迭代器和生成器
1.生成器是功能更强大的迭代器,返回的是一个迭代器的函数。
INI文件读写
1.option也就是key
目录与文件操作
- os模块的删除目录方法,目标删除目录必须存在且无子目录、子文件
- path模块获取文件大小单位为字节
- os模块所提供的目录遍历方法walk,返回值为一个迭代器对象,它的每个部分包含一个元组,即(目录X, [目录X下的目录列表], [目录X下的文件列表])
XML解析处理-Element Tree
- 1.python中解析xml的方法有很多,ElementTree是其中之一
ElementTree中每个节点(即Element)具有如下属性:
- tag:string对象,标识该元素类型
- attrib:dictionary对象,标识该元素属性
- text:string对象,标识该元素的文本
- tail:string对象,标识该元素可选的尾字符串
- child elements:标识子节点
注意:Element类型是一种灵活的容器对象,用于在内存中存储结构化数据。
- 使用ET.fromstring("xml格式字符串")即可实现对xml格式的字符串进行遍历读取、新增、修改和删除。
SMTP发送邮件
- 使用smtplib进行文本格式、HTML格式和带附件的邮件发送
- 导入smtplib模块
import smtplib - 关键函数说明
1)创建smtp对象
smtp = smtplib.SMTP([host [, port[, localhost]]])
参数说明:
host:smtp服务地址,例如126邮箱的是:smtp.126.com
port:smtp服务端口
localhost:如果你的smtp服务在本机,则只需指定localhost即可
2)发送邮件函数
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
参数说明:
fromaddr:邮件发送地址
toaddrs:邮件接收地址列表
msg:邮件内容
mail_options,rcpt_options:可选参数
- 导入smtplib模块
- 发送内容的构建中,将plain改为html标识邮件内容为html格式,邮件内容采用html语言来格式化
- 附件格式邮件需要导入新的类:from email.mime.multipart from MIMEMultipart
需要使用MIMIMultipart构建内容结构,关键代码如下:
# 发送内容构建 # html标识发送内容为文本格式
msg = MIMEMultipart()
msg["From"] = "sender@163.com"
msg["To"] = receivers
# 构建邮件标题
msg["Subject"] = Header("附件格式邮件", "utf-8")
# 构建邮件正文内容
msg.attach(MIMEText("附件格式邮件", "plain", "utf-8"))
# 构造附件,多个附件同理
attach1 = MIMEText(open("smtp_attach.py", 'rb').read(), "base64", "utf-8")
attach1["Content-Type"] = "application/octet-stream"
# 这里filename随意写,将会在邮件中显示
attach1["Content-Disposition"] = "attachment;filename=code.py"
# 关联附件到邮件中
msg.attach(attach1) - 构建文本和html格式的邮件使用MIMEText构建,使用plain标识文本内容格式,使用html标识html内容格式
- 对于附件格式则需要使用MIMEMultipart
SMTP发送邮件
- 安装pymysql: pip install PyMySQL
- 在pymysql中提供了Connection和Cursor对象来管理操作MySQL
- Connection
代表一个与MySQL Server的socket连接,使用connect方法来创建一个连接实例
connect()-------创建一个数据库连接实例
begin()----------开始一个事务
close()----------发送一个退出消息,并关闭连接
commit()--------提交修改至数据库
cursor()---------创建一个cursor(游标)实例
ping()------------检测服务器是否在允许
rollback()--------回滚当前事务
selectdb(db)---设置当前db
showwarning---显示警告信息 - Cursor
代表一个与MySQL数据库交互对象,使用Connection.Cursor()在当前socket连接上交互对象
close()-------------关闭当前cursor
execute()----------执行一个sql语句
executemany()---执行批量sql语句
fetchall()-----------取所有数据
fetchone()---------取一条数据
- Connection
遗留问题
- 利用生成器函数去读大文件,例如10G的文件,你可以利用生成器函数,每次只读100M进行处理,处理完后再读取下一个100M,如此迭代下去
- 提问:os_walk.py为什么最后两个for是平级的?不平级的效果为什么遍历不到部分文件最深层?
- 提问:字符串存储中文时如何转换
- 用类封装一个通用的ini文件操作类
- 提问:格式化日期时间函数strftime为什么后面要加上time.loacltime()
- 使用ET.fromstring("xml格式字符串")实现对xml格式的字符串进行遍历读取、新增、修改和删除动作
1.整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
2.在Python中,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(//表示注释)
int a = 123;//a是整数型类型变量 a = "ABC";//错误;不能把字符串赋给整型变量
和静态语言相比,动态语言更灵活,就是这个原因。
最后,理解变量在计算机内存中的表示也非常重要。例如下面的代码:
a = 'ABC' b = a a = 'XYZ' print(b)
最后一行打印出变量b的内容到底是‘ABC’呢还是‘XYZ’?如果从数学意义上理解,就会错误地得出b和a相同,也应该是‘XYZ’,但实际上b的值是‘ABC’。
执行a = ‘ABC’,解释器创建了字符串‘ABC’和变量a,并把a指向‘ABC’:
执行b = a,解释器创建了变量b,并把b指向a指向的字符串‘ABC’:
执行a = ‘XYZ’,解释器创建了字符串‘XYZ’,并把a的指向改为‘XYZ’,但b并没有更改:
所以,最后打印变量b的结果自然是‘ABC’了。
3.在Python中,通常用全部大写的变量名表示常量