Python 资源篇----参考《从Python开始学编程》
2018-01-10 10:27
295 查看
以下目前分为:文件篇、上下文管理器、pickle包、time时间篇、正则表达式篇、网络篇
文件篇
1.打开文件
2.读取文件内容
f文件从上次操作后的位置继续执行。例如如果一行字超过10个字节,第一次f.read(10)只读取10个字节,则下次操作f.read(10)将会紧接上一次的位置继续读取10个字节
3.写入文件
4.关闭文件
上下文管理器
上下文管理器具有自动关闭不需要文件的功能,使用with…as…结构。当语句不再缩进时,上下文管理器将会自动关闭文件。
上下文管理器基于f对象的exit()特殊方法。使用上下文管理器的语法时,Python 会在进入程序块之前调用文件对象的enter()方法,在程序块的结尾调用文件对象的exit()方法。在该方法中有self.close()语句。因此,使用上下文管理器时,就可以不用编写关闭文件语句。
自制适用于上下文管理器的with…as…结构的类,如下:
输
4000
出结果为:
I say: I’m fine
I say: I’m fine!
进一步解释该类的exit和enter方法
enter()返回一个对象,上下文管理器会使用该对象作为as 所指的变量。
exit()有四个参数。当程序块出现异常时。exc_type、exc_value、 traceback用于描述异常。如果运行正常,则三个参数都为None。
pickle包重点内容
time时间篇
下面为上述代码的运行结果:
1515573133.8462498
0.042953753706752945
start
wake up
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=10, tm_hour=8, tm_min=32, tm_sec=14, tm_wday=2, tm_yday=10, tm_isdst=0)
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=10, tm_hour=16, tm_min=32, tm_sec=15, tm_wday=2, tm_yday=10, tm_isdst=0)
1515573135.0
2012-09-03 21:30:00
2012-09-03 21:40:00
2012-09-24 21:30:00
2 days, 2:00:00
False
1997-12-23 03:00:00
2012-09-05 23:30
正则表达式篇
正则表达式主要是根据自己编写的模式,对字符串进行搜索或者进行其他处理。类似模糊匹配。Python的正则表达式包为:re包。
1.下面首先介绍简单的方法
运行后的结果为:
4
4
abcdloveeflovelove
[‘abcd’, ‘ef’, ”, ”]
[‘4’, ‘5’, ‘6’]
1994
output_1994
1994
网络篇
文件篇
1.打开文件
f = open("hello.txt","r")#r表示读取已经存在的文件;w表示新建文件,并写入;a表示如果文件存在,那么写入到文件的结尾,如果文件不存在,则新建文件并写入。
2.读取文件内容
f文件从上次操作后的位置继续执行。例如如果一行字超过10个字节,第一次f.read(10)只读取10个字节,则下次操作f.read(10)将会紧接上一次的位置继续读取10个字节
f = open("f:/Control.txt","r") content = f.read(10) #读取10个字节的数据 content = f.readline() #读取一行 content = f.readlines()#读取所有行
3.写入文件
f = open("f:/Control.txt","w") f.write("I like apple\r\n")#在Windows中,换行符“\r\n”,Unix,则为“\n”
4.关闭文件
f = open("f:/Control.txt","r") f.close()#关闭文件
上下文管理器
上下文管理器具有自动关闭不需要文件的功能,使用with…as…结构。当语句不再缩进时,上下文管理器将会自动关闭文件。
上下文管理器基于f对象的exit()特殊方法。使用上下文管理器的语法时,Python 会在进入程序块之前调用文件对象的enter()方法,在程序块的结尾调用文件对象的exit()方法。在该方法中有self.close()语句。因此,使用上下文管理器时,就可以不用编写关闭文件语句。
#使用上下文管理器 with open("f:\Control.txt","w") as f: f.write("Hello World!") print(f.closed)#若为True,则为文件处于关闭状态。
自制适用于上下文管理器的with…as…结构的类,如下:
class Vow(object): def __init__(self,text): self.text = text def __enter__(self): self.text = "I say" + self.text return self def __exit__(self,exc_type,exc_value,traceback): self.text = self.text + "!" with Vow("I'm fine") as myWow: print(mVow.text) print(myVow.text)
输
4000
出结果为:
I say: I’m fine
I say: I’m fine!
进一步解释该类的exit和enter方法
enter()返回一个对象,上下文管理器会使用该对象作为as 所指的变量。
exit()有四个参数。当程序块出现异常时。exc_type、exc_value、 traceback用于描述异常。如果运行正常,则三个参数都为None。
pickle包重点内容
import pickle class Bird(object): have_feather = True reproduction_method = "egg" summer = Bird() pickle_string = pickle.dumps(summer) #序列化对象 print(pickle_string) with open("summer.pkl","wb") as f: f.write(pickle_string) import pickle class Bird(object): have_feather = True reproduction_method = "egg" summer = Bird() with open("summer.pkl","wb") as f: pickle.dump(summer,f) #序列化并保存对象 import pickle class Bird(object): have_feather = True reproduction_method = "egg" with open("summer.pkl","rb") as f: summer = pickle.load(f) #序列化并保存对象 print(summer.have_feather)
time时间篇
import time print(time.time()) #挂钟时间,Unix一般从1970年1月1日0点0分0秒 #测量程序运行时间 start = time.clock() for i in range(100000): j=i**2 end = time.clock() print(end - start) #Windows 返回的是挂钟时间,UNIX返回的是CPU时间。 print("start") time.sleep(1) #休眠1秒 print("wake up") st = time.gmtime() #返回struct_time格式的UTC时间 print(st) st = time.localtime() #返回当地时间,当地时区根据系统环境决定 print(st) s = time.mktime(st) #将struct_time格式转换成挂钟时间 print(s) import datetime t = datetime.datetime(2012,9,3,21,30) print(t) #t对象有如下属性:hour,minute,second,millisecond,microsecond,year,month,day,weekday #借助datetime包,进行时间间隔的运算。timedelta对象 t = datetime.datetime(2012,9,3,21,30) t_next = datetime.datetime(2012,9,5,23,30) delta1 = datetime.timedelta(seconds = 600)#除了seconds,weeks,还可以传递days,hours,milliseconds,microseconds delta2 = datetime.timedelta(weeks = 3) print(t + delta1) #打印 2012-09-03 21:40:00 print(t + delta2) #打印 2012-09-24 21:30:00 print(t_next - t) #打印2 days,2:00:00 print(t>t_next) #打印False #将包含有时间信息的字符串,借助datetime包,转换成datetime类的对象。 from datetime import datetime str = "output-1997-12-23-030000.txt" format = "output-%Y-%m-%d-%H%M%S.txt"#如果想使用符号%,则需要写"%%"来表示 t = datetime.strptime(str,format) print(t) #打印1997-12-23 03:00:00 #可以将datetime对象转换为特定格式的字符串,使用strftime方法 format = "%Y-%m-%d %H:%M"#除了%H(24小时制的小时)%M(分钟)%S(秒)%Y(年份)%m(月份)%d(日) #之外,还有%A(星期几,如Sunday,Monday,%a,简写的星期几,如Sun,Mon,%I 表示小时,12小时制,%p 表示上午或下午即AM或PM,%f表示毫秒,如2、0014) t = datetime(2012,9,5,23,30) print(t.strftime(format))#打印 2012-09-05 23:30
下面为上述代码的运行结果:
1515573133.8462498
0.042953753706752945
start
wake up
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=10, tm_hour=8, tm_min=32, tm_sec=14, tm_wday=2, tm_yday=10, tm_isdst=0)
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=10, tm_hour=16, tm_min=32, tm_sec=15, tm_wday=2, tm_yday=10, tm_isdst=0)
1515573135.0
2012-09-03 21:30:00
2012-09-03 21:40:00
2012-09-24 21:30:00
2 days, 2:00:00
False
1997-12-23 03:00:00
2012-09-05 23:30
正则表达式篇
正则表达式主要是根据自己编写的模式,对字符串进行搜索或者进行其他处理。类似模糊匹配。Python的正则表达式包为:re包。
1.下面首先介绍简单的方法
#Python 使用 re包来处理正则表达式 #search 在一个字符串中搜索一个符合正则式的子串 #match方法必须从第一个字符开始检查,不符合None #sub方法利用正则pattern在字符串string中进行搜索,并用另一个字符replacement进行替换。 #re.sub(pattern.replacement,string) #split方法:根据正则表达式分割字符串,将分割后的所有子字符串放进一个list中返回 import re m = re.search("[0-9]","abcd4ef56") print(m.group(0)) print(m.group()) m = re.match("[0-9]","abcd4ef56") #print(m.group(0)) 没有该对象,报错 str = re.sub("[0-9]","love","abcd4ef56") print(str) spstr = re.split("[0-9]","abcd4ef56") print(spstr) strall = re.findall("[0-9]","abcd4ef56") print(strall) """ . 任意的一个字符 a|b 字符a或者b [afg] a或者f或者g的一个字符 [0-4] 0-4范围内的一个字符 [a-f] a-f范围内的一个字符 [^m] 不是m的一个字符 \s 一个空格 \S 一个非空格 \d 一个数字,相当于[0-9] \D 一个非数字,相当于[^0-9] \w 数字或字母,相当于[0-9a-zA-Z] \W 非数字非字母,相当于[^0-9a-zA-Z] 正则表达式中还有一部分符号代表其前面的字符的重复频数 * 重复超过0次或更多次 + 重复1次或超过1次 ? 重复0次或1次 {m} 重复m次。比如a{4}相当于aaaa,再比如[1-3]{2}相当于[1-3][1-3] {m,n} 重复m到n次。比如a{2,5}表示a重复2到5次。小于2次或大于5次都不符合条件 最后有一部分关于位置的符号 ^ 字符串的起始位置 $ 字符串的结尾位置 进一步提取,需要正则表达式的目标外面带上圆括号 用括号()圈起来的正则表达式的一部分,成为群(group)。一个正则表达式中可以有很多群。 注意group(0)是整个正则表达的搜索结果。group(1)是第一个群,以此类推。 还可以将群命名 (?P<name>...)为group命名 """ m = re.search("output_(\d{4})","output_1994.txt") print(m.group(1)) #打印1994 print(m.group(0)) #打印output_1994 m = re.search("output_(?P<year>\d{4})","output_1994.txt")#为第一个群,命名为year print(m.group("year")) #打印1994
运行后的结果为:
4
4
abcdloveeflovelove
[‘abcd’, ‘ef’, ”, ”]
[‘4’, ‘5’, ‘6’]
1994
output_1994
1994
网络篇
import http.client conn = http.client.HTTPConnection("www.example.com") conn.request("GET",'/') response = conn.getresponse() print(response.status,response.reason) #status等于200表示正常,404表示无法找到,302表示重定向,reason 表示状态描述,如200的状态描述为“OK”,Content-type:分为text/plain:普通文本 text/html:HTML文本 image/jpeg:jpeg图片,image/gif:gif图片 content = response.read() print(content)
相关文章推荐
- 踏上编程大道,从 Python 开始成为神级 Coder 吧
- 学习Python编程的11个资源
- 32. Python脚本学习笔记三十二开始编程
- Python编程系统资源
- python编程快速上手之第10章实践项目参考答案
- 学习Python编程的11个资源
- 学习Python编程的11个资源
- 资源 | 想用Python学机器学习?Google大神替你写好了所有的编程示范代码
- 迟迟开始学习的网络编程,C语言客户端服务端,python客户端服务端和mini木马
- 踏上编程大道 从Python 开始成为神级Coder 吧
- 如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx
- 免费编程入门教程资源推荐搜集,分享给想开始学习程序开发的同学
- 安装Python的web.py框架并从hello world开始编程
- 学习 Python 编程的 19 个资源
- 开始慢慢学习这本书了。。Python编程实战:运用设计模式、并发和程序库创建高质量程序
- Python -- Gui编程 -- Qt库的使用 -- 配置资源文件
- 如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx
- Python函数式编程指南:目录和参考(转载)