第五章 对象带你飞

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))

根据文章内容,我们可以进行更复杂的操作。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 一、存储 .文本 。Python中的数据都保存在内存中,内存中的数据就会消失。而且,如果Python程序运行结束,...
    mAbbQi阅读 415评论 0 1
  • 5.1 存储 5.1.1 文件 内存存储:当电脑断电时,内存中的数据就会消失。另一方面,如果Python程序运行结...
    SibyLtuI阅读 179评论 0 0
  • 5.1 存储 5.1.1 文件 ①打开 如果Python程序运行结束,那么分配给这个程序的内存空间也会清空。为了长...
    XavieR_ZzQ阅读 135评论 0 0
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,729评论 0 8
  • 口红究竟有多重要? 拿我自己的经验来说, “一入红唇深似海,从此素唇是路人”: 曾经几乎不涂唇膏, 因为觉得自己h...
    护肤小达人可可阅读 2,693评论 0 0