Python在安装的时候,就有不少模块也随之安装到本地计算机上。我们能够轻易的免费去使用他,也就着“自带电池”
那些在安装Python时就默认已经安装好的模块被称为“标准库”。
熟悉使用标准库,是Python开发必掌握的技能之一。
1,
引用方式
所有模块都服从下面引用方式,这是最基本的,也是最常用的方式:
import modulename
例如:
>>> import pprint
>>> a = {"name":"zhangsan","like":"python"}
>>> pprint.pprint(a)
{'like': 'python', 'name': 'zhangsan'}
以pprint.pprint()的方式使用模块中的一种方法,这种方法能够让字典格式化输出。
在import后面,理论上可以跟好多模块名称,但是在实践中,建议一次跟一个名称,太多了不容易阅读。
>>>
from pprint import pprint
>>> pprint(a)
{'like': 'python', 'name': 'zhangsan'}
意思是从pprint模块中只将pprint()引入,之后就可以直接使用它了。
再简洁一些:
>>>
from pprint import *
将pprint模块中的一切都引入了,于是可以像上面那样直接使用每个函数。但是这种方式可读性不好,内存消耗多。
当模块方法名太长时,可以重命名:
>>>
import pprint as pp
>>> pp.pprint(a)
{'like': 'python', 'name': 'zhangsan'}
还可以这样使用:
>>>
from pprint import pprint as ps
>>> ps(a)
{'like': 'python', 'name': 'zhangsan'}
引用方式,一定要记住,自己能分清楚,别人能看明白。
>>> print pprint.
__doc__ #查看帮助文档,也就时注释
>>> print pprint.
__file__ #查看文件所在的位置,也就是源码位置
2,
sys
这是一个跟Python解释器关系密切的标准库,我们已经使用过sys.path.append()。
1)
sys.argv
sys.argv是变量,用来向Python解释器传递参数,所以名曰“命令行参数”。
--version就是命令行参数。
#! /usr/bin/env python
# coding=utf-8
import sys
print "The file name:",sys.argv[0]
print "The number ",len(sys.argv)
print "The argument is:",str(sys.argv)
执行结果:
PS D:\> python test.py
The file name: test.py
The number 1
The argument is: ['test.py']
python test.py中,test.py时要运行的文件,同时也是命令行参数。
sys.argv[0]是指第一个参数
2)
sys.exit()
这个方法意思是退出当前程序。
#! /usr/bin/env python
# coding=utf-8
import sys
for i in range(10):
if i==5:
sys.exit()
else:
print i
结果:
>>>
0
1
2
3
4
在有的函数中(甚至大多数函数中)会用到
return,其含义是终止当前的函数,并返回相应值(如果没有就是None)。但是
sys.exit()的含义是退出当前程序,并发起
SystemExit异常。这就是两者的区别了。
使用
sys.exit(0)表示正常退出,如果退出的时候有一个对人友好的提示信息,可以用
sys.exit("I wet out at here."),那么字符串信息就被打印出来。
3)
sys.path
sys.path,它可以查找模块所在的目录,以列表的形式显示出来。如果用append()方法,就能够向这个列表增加新的模块目录。
4)
sys.stdin,sys.stdout,sys.stderr
他们的变量都是类文件流对象,分别表示标准UNIX概念中的标准输入、标准输出和标准错误。
还记得
print()吧,它的本质就是
sys.stdout.write(object+'\n')。
更强大的在于通过
sys.stdout能够做到将输出内容从“控制台”转到“文件”,称之为
重定向。
>>> a = open("D://test.txt","w") #以写的方式打开文件
>>>
sys.stdout
= a #将输出目的转到打开的文件中
>>> print "Test the python" #将内容写到文件中
>>> a.close() #关闭文件
打开D://test.txt就能看到输入的内容。
3,
os
os模块提供了访问操作系统服务的功能
1)
操作文件:重命名,删除文件
open()这个内建函数可以建立、打开文件。但是,如果对文件进行改名、删除操作,就要使用os模块的方法了。
>>> import os
>>>
os.rename
("D://test.txt","D://test1.txt") #第一个文件是原文件名称,第二个是打算修改成为的文件名。
要是先进入到了文件test.txt的目录,然后再进入交互模式,可以直接写文件名,如果不是这样,需要将文件的路径写上。
打开目录就会发现名字已经改过来了。
os.rename(old, new):除了能修改文件名称,还能修改目录
os.remove(path):删除文件,不能删除目录
>>> import os
>>>
os.remove
("D://test1.txt")
去目录下查看,已经删除掉了test1.txt
2)
操作目录
(1)
os.listdir(path):显示目录中的文件。
(2) os.getcwd,os.chdir:当前工作目录,改变当前工作目录。
os.getcwd() #查看当前目录
os.chdir(os.pardir) #进入上一级目录
os.chdir("rd") #进入下一级目录
os.pardir #相当于".."
(3) os.makedirs,os.removedirs:创建和删除目录。
os.removedirs(path) #删除目录,但目录必须是空的
os.makedirs(path) #创建目录
当前目录不空,可以用
shutil的
rmtree来删除
>>> import shutil
>>> shutil.rmtree(path)
(4)
os.stat(path)能够查看文件或者目录的属性
4,
heapq
堆(heap),是一种数据结构,堆的实现是通过构造二叉堆,也就是一种二叉树。
>>> import
heapq
>>> heapq.__all__
['heappush', 'heappop', 'heapify', 'heapreplace', 'merge', 'nlargest', 'nsmallest', 'heappushpop']
heapq中的heap是堆,q就是queue(队列)的缩写
heappush(heap,x):将x压入堆heap(这是一个列表)。
>>> import heapq
>>> ha = []
>>> heapq.
heappush
(ha,1)
>>> heapq.heappush(ha,2)
>>> heapq.heappush(ha,5)
>>> heapq.heappush(ha,3)
>>> ha
[1, 2, 5, 3]
>>> heapq.
heappop
(ha) #删除最小元素,输出结果已经排序
1
>>> ha
[2, 3, 5]
heapify():将列表转换为堆。
>>> h1 = [1,0,2,4,5]
>>> heapq.
heapify
(h1)
>>> h1
[0, 1, 2, 4, 5]
经过这样的操作,列表hl就变成了堆(堆的顺序和列表不同),可以对hl(堆)使用heappop()或者heappush()等函数了。否则,不可。
heapreplace():是
heappop()和
heappush()的联合,也就是删除一个的同时再加入一个。
>>> ha
[2, 3, 5]
>>> heapq.
heapreplace
(ha,6)
2
>>> ha
[3, 6, 5]
5,
日历calendar
>>> import
calendar
>>> c =
calendar.month
(2018,4)
>>> print c
April 2018
Mo Tu We Th Fr Sa Su
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
calendar.calendar(year,w=2,l=1,c=6)
返回year年年历,3个月一行,间隔距离为c,每日宽度间隔为w字符,每行长度为21*W+18+2*C,l是每星期行数。
calendar.isleap(年份) #判断是否为闰年,是则返回True,否则False
calendar.leapdays(2000,2004) #返回在y1、y2两年之间的闰年总数,包括y1,但不包括y2
calendar.month(year, month, w=2, l=1) #返回year年month月日历,两行标题,一周一行。每日宽度间隔为w字符,每行的长度为7*w+6,l是每星期的行数。
calendar.monthcalendar(year, month)
返回一个列表,列表内的元素还是列表,这叫作嵌套列表。每个子列表代表一个星期,都是从星期一到星期日,如果没有本月的日期,则为0。
calendar.monthrange(year,month)
返回一个元组,里面有两个整数。第一个整数代表着该月的第一天从星期几开始(从0开始,依次为星期一、星期二……6代表星期日)。第二个整数代表该月一共多少天。
calendar.weekday(year,month,day)
输入年月日,知道该日是星期几(注意,返回值依然按照从0到6依次对应星期一到星期六)。
6,
time
time模块很常用,比如记录某个程序运行时间长短等
>>> import time
>>> time.
time
()
1523242448.602
time.time()获得的是当前时间(时间戳)
>>> time.
localtime
() #获得结果,年,月,日,时,分,秒,一周的第几天,一年中第几天,夏令时
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=9, tm_hour=10, tm_min=55, tm_sec=29, tm_wday=0, tm_yday=99, tm_isdst=0)
localtime(),得到的结果可以称之为时间元组(也有括号),获取本地时间
>>> t = time.
localtime
()
>>> t[1] #通过索引能够得到相应的属性
4
>>> time.
localtime
(200000) #还可以转换时间戳
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=3, tm_hour=15, tm_min=33, tm_sec=20, tm_wday=5, tm_yday=3, tm_isdst=0)
gmtime():国际化时间
>>> import time
>>> time.
gmtime
()
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=9, tm_hour=3, tm_min=2, tm_sec=24, tm_wday=0, tm_yday=99, tm_isdst=0)
time.asctime():参数为空时,默认是以time.localtime()的值为参数,所以得到的是当前日期时间和星期。当然,也可以自己设置参数
time.strftime("%y/%m/%d"):将时间元组按照指定格式要求转化为字符串
7,
datetime
datetime模块中有以下几个类。
datetime.date:日期类,常用的属性有year/month/day。
datetime.time:时间类,常用的有hour/minute/second/microsecond。
datetime.datetime:日期时间类。
datetime.timedelta:时间间隔,即两个时间点之间的时间长度。
datetime.tzinfo:时区类。
>>> import
datetime
>>> t =
datetime.date.today
()
>>> t
datetime.date(2018, 4, 9)
>>> print t
2018-04-09
>>> print t.
year
2018
>>> print t.
month
4
>>> print t.
day
9
注意单独获取年月日方法
8
,urllib
urllib模块用于读取来自网上(服务器上)的数据,做爬虫常用。
>>> import
urllib
>>> a = urllib.
urlopen
("http://www.baidu.com")
>>> print a
>>> print a.read()
...
urlopen(url,data=None,proxies=None)主要用于打开url文件,从而获得指定url网页内容,然后就如同操作文件那样来操作。
url:远程数据的路径,常常是网址。
data:如果使用post方式,这里就是所提交的数据。
proxies:设置代理。