5.1储存
1.文件
通过内置函数open来创建文件对象
f=open(文件名,方式)
打开文件的常用方式P107
通过上面返回的对象,我们可以读取文件:
content=f.read(10)#读取10个字节的数据
content=f.readline()#读取一行
content=f.readlines()#读取所有行,储存在列表中,每个元素是一行
通过以"w"或"a"的方式打开,可以写入文本
f.write("I like apple")
读写完成后,应该关闭文件:
f.close()
2.上下文管理器
上下文管理器用于规定某个对象的使用范围。上下文管理器还可以在不需要文件的时候,自动关闭文件。
#使用上下文管理器
with open("new.txt","w")as f:
f.write("hello world!")
print(f.close)#检查文件是否关闭,打印True
当隶属的程序块执行结束时,也就是语句不再缩进时,上下文管理器就会自动关闭文件。
3.pickle
对象的存储分为两步,第一步将对象中的数据直接抓取出来,转换成一个有序的文本,即所谓的序列化;第二步将文本存入文件。
import pickle
class Bird(object):
feather=True
reproduction="egg"
summer=Bird()#创建对象
pickle_string=pickle.dumps(summer)#序列化对象
with open("summer.pkl","wb")as f:
f.write(pickle_string)#保存对象
with open("summer.pkl","rb")as f:#读取对象
summer=pickle.load(f)
print(summer.feather)
5.2一寸光阴
1.time包
借助模块time测量运行时间:
import time
for I in range(100000):
print(i**2)
m=time.perf_counter()
print(m)#与书本方法不同,新版本不推荐书本方法
2.datetime包
datetime包是基于time包的一个高级包,用起来更加便利。
表达时间点、进行时间间隔运算、两个datetime对象进行比较运算P116
3.日期格式
from datetimeimport datetime
str="output-1997-12-23-030000.txt"
format="output-%Y-%m-%d-%H%M%S.txt"
t=datetime.strftime(str,format)
print(t)#打印1997-12-23 03:00:00
包含有时间信息的字符串str,是一个文件名,字符串format定义了一个格式。通过striptime方法,python会把需要解析的字符串往格式上凑。
我们也可以调用datetime对象的strfttime方法,将一个datetime对象转换为特定格式的字符串。格式化转化的关键是%号引领的特殊符号P119,但如果想在格式中表达%这个字符本身,而不是特殊符号,那么可以使用%%。
5.3看起来像那样东西
1.正则表达式
正则表达式主要功能是从字符串中通过特定模式,搜索希望找到的内容。
import re
m=re.search("[0-9]","abcd4ef")#从abcd4ef中找0-9的任意一个数字字符
print(m.group(0))
如果没有找到,则re.search()会返回None
我很还可以在搜索之后的子字符串进行替换等操作P120
2.写一个正则表达式
正则表达式的常用语法P121,正则表达式还可以用某些符号来表示某种形式的重复,这些符号紧跟在单个字符之后P121,此外还有位置相关的符号P122
3.进一步提取
用括号()圈起来的正则表达式的一部分称为群,一个正则表达式可以有多个群。我们可以用group(number)的方法来查询群,group(0)是整个正则表达式的搜索结果,group(1)是第一个群。
群的命名:
import re
m=re.search("output_(?P<year>\d{4})","output_1986.txt")#(?P<year>...)为group命名
print(m.group(1))#打印1986
5.4python有网瘾
1.HTTP通信简介
计算机发出请求会遵照下面格式:
GET(说明想要服务器执行的操做)/index.html(资源的路径) HTTP/1.1(协议的版本)
Host: www.example.com
服务器接收到请求后,会根据程序,生成对应于该请求的回复:
HTTP/1.1(协议版本) 200(状态码) OK(状态描述P126)
Content-type:text/plain(主体所包含的资源类型P127)
Content-length:12(主体部分长度,亿字节byte为单位)
Hello World!(回复的主体部分,包含了主要的文本数据)
2.http.client包
HTTP请求最重要的一些信息是主机地址、请求方法和资源路径。只要明确这些信息,再加上http.client的帮助,就可以发出请求了。
5.5写一个爬虫
利用http.client包写爬虫:
获取博客发表日期和阅读量
import http.client
conn=http.client.HTTPConnection("www.cnblogs.com")#主机地址
conn.request("GET","/vamei")#请求方法和资源路径
response=conn.getresponse()#获得回复
content=response.read()#回复的主体内容
content=content.split("\r\n")#分割成行
import re#我们想要的信息镶嵌在一串文字中,运用正则表达式,提取我们需要的信息
pattern="posted@(\d{4}-[0-1]\d-{0-3}\d [0-2]\d:[0-6]\d vamei 阅读量\((\d+)\) 评论"
for line in content:
m=re.search(pattern,line)
if m!=None:
print(m.group(1),m.group(2))
根据文章内容,我们可以进行更复杂的操作。