python中常用的模块的总结教学内容.docx

上传人:b****4 文档编号:11718542 上传时间:2023-03-31 格式:DOCX 页数:16 大小:20.75KB
下载 相关 举报
python中常用的模块的总结教学内容.docx_第1页
第1页 / 共16页
python中常用的模块的总结教学内容.docx_第2页
第2页 / 共16页
python中常用的模块的总结教学内容.docx_第3页
第3页 / 共16页
python中常用的模块的总结教学内容.docx_第4页
第4页 / 共16页
python中常用的模块的总结教学内容.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

python中常用的模块的总结教学内容.docx

《python中常用的模块的总结教学内容.docx》由会员分享,可在线阅读,更多相关《python中常用的模块的总结教学内容.docx(16页珍藏版)》请在冰豆网上搜索。

python中常用的模块的总结教学内容.docx

python中常用的模块的总结教学内容

1、模块和包

a.定义:

模块用来从逻辑上组织python代码(变量,函数,类,逻辑:

实现一个功能),本质就是.py结尾的python文件。

(例如:

文件名:

test.py,对应的模块名:

test)

包:

用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py的文件)

b.导入方法

importmodule_name

importmodule_1的本质:

是将module_1解释了一遍

也就是将module_1中的所有代码复制给了module_1

frommodule_name1importname

本质是将module_name1中的name变量放到当前程序中运行一遍

所以调用的时候直接print(name)就可以打印出name变量的值

代码例子:

自己写的模块,其他程序调用,如下所示:

模块module_1.py代码:

复制代码

1name="dean"

2defsay_hello():

3print("hello%s"%name)

调用模块的python程序main代码如下:

(切记调用模块的时候只需要import模块名不需要加.py)

importmodule_1

#调用变量

print(module_1.name)

#调用模块中的方法

module_1.say_hello()

复制代码

这样运行main程序后的结果如下:

1D:

\python35\python.exeD:

/python培训/s14/day5/module_test/main.py

2dean

3hellodean

4

5Processfinishedwithexitcode0

importmodule_name1,module_name2

frommodule_nameimport*(这种方法不建议使用)

frommodule_nameimportloggeraslog(别名的方法)

c.导入模块的本质就是把python文件解释一遍

importmodule_name---->module_name.py---->module_name.py的路径---->sys.path

导入包的本质就是执行该包下面的__init__.py

关于导入包的一个代码例子:

新建一个package_test包,并在该包下面建立一个test1.py的python程序,在package包的同级目录建立一个p_test.py的程序

test1的代码如下:

1deftest():

2print("intthetest1")

package_test包下的__init__.py的代码如下:

1#importtest1(理论上这样就可以但是在pycharm下测试必须用下面from.importtest1)

2from.importtest1

3print("intheinit")

p_test的代码如下:

1importpackage_test#执行__init__.py

2package_test.test1.test()

这样运行p_test的结果:

1D:

\python35\python.exeD:

/python培训/s14/day5/p_test.py

2intheinit

3intthetest1

4

5Processfinishedwithexitcode0

从上述的例子中也可以看出:

导入包的时候其实是执行包下的__init__.py程序,所以如果想要调用包下面的python程序需要在包下的__init__.py导入包下面的程序

2、模块的分类

a.标准库

b.开源模块

c.自动以模块

3、时间模块

time与datetime

python中常见的时间表示方法:

a.时间戳

时间戳:

从1970年1月1日00:

00:

00到现在为止一共的时间数(单位为秒)

>>>time.time()

1472016249.393169

>>>

b.格式化的时间字符串

c.struct_time(元组)

相互之间的转换关系如下:

1)time.localtime()将时间戳转换为当前时间的元组

>>>time.localtime()

time.struct_time(tm_year=2016,tm_mon=8,tm_mday=24,tm_hour=13,tm_min=27,tm_sec=55,tm_wday=2,tm_yday=237,tm_isdst=0)

>>>

2)time.gmtime()将时间戳转换为当前时间utc时间的元组

>>>time.gmtime()

time.struct_time(tm_year=2016,tm_mon=8,tm_mday=24,tm_hour=5,tm_min=35,tm_sec=43,tm_wday=2,tm_yday=237,tm_isdst=0)

>>>

3)time.mktime()可以将struct_time转换成时间戳

>>>x=time.localtime()

>>>x

time.struct_time(tm_year=2016,tm_mon=8,tm_mday=24,tm_hour=13,tm_min=39,tm_sec=42,tm_wday=2,tm_yday=237,tm_isdst=0)

>>>time.mktime(x)

1472017182.0

>>>

4)将struct_time装换成格式化的时间字符串

>>>x

time.struct_time(tm_year=2016,tm_mon=8,tm_mday=24,tm_hour=13,tm_min=39,tm_sec=42,tm_wday=2,tm_yday=237,tm_isdst=0)

>>>time.strftime("%Y-%m-%d%H:

%M:

%S",x)

'2016-08-2413:

39:

42'

>>>

5)可以将格式化的时间字符串转换为struct_time

>>>time.strptime("2016-08-2414:

05:

32","%Y-%m-%d%H:

%M:

%S")

time.struct_time(tm_year=2016,tm_mon=8,tm_mday=24,tm_hour=14,tm_min=5,tm_sec=32,tm_wday=2,tm_yday=237,tm_isdst=-1)

>>>

6)将struct_time转换成WedAug2414:

22:

472016这种格式

>>>x

time.struct_time(tm_year=2016,tm_mon=8,tm_mday=24,tm_hour=14,tm_min=22,tm_sec=47,tm_wday=2,tm_yday=237,tm_isdst=0)

>>>time.asctime(x)

'WedAug2414:

22:

472016'

>>>

7)将时间戳装换成WedAug2414:

22:

472016格式

>>>x=time.time()

>>>x

1472019984.958831

>>>time.ctime(x)

'WedAug2414:

26:

242016'

>>>

复制代码

1%a本地(locale)简化星期名称

2%A本地完整星期名称

3%b本地简化月份名称

4%B本地完整月份名称

5%c本地相应的日期和时间表示

6%d一个月中的第几天(01-31)

7%H一天中的第几个小时(24小时制,00-23)

8%I第几个小时(12小时制,01-12)

9%j一年中的第几天(001-366)

10%m月份(01-12)

11%M分钟数(00-59)

12%p本地am或者pm的相应符

13%S秒(01-61)

14%U一年中的星期数。

(00-53星期天是一个星期的开始。

)第一个星期天之前的所有天数都放在第0周。

15%w一个星期中的第几天(0-6,0是星期天)

16%W和%U基本相同,不同的是%W以星期一为一个星期的开始。

17%x本地相应日期

18%X本地相应时间

19%y去掉世纪的年份(00-99)

20%Y完整的年份

21%Z时区的名字(如果不存在为空字符)

22%%‘%’字符

复制代码

datetime

当前时间:

datetime.datetime.now()

1、随机模块random

random.randint(1,3)则可以取出随机1-3

random.randrange(1,3)随机从范围内所及

random.choice()传递的参数是序列包括字符串列表等

>>>random.choice("hello")

'l'

>>>random.choice("hello")

'o'

>>>random.choice("hello")

'e'

>>>

>>>random.choice(["我","爱","你"])

'我'

>>>random.choice(["我","爱","你"])

'你'

>>>random.choice(["我","爱","你"])

'你'

>>>random.choice(["我","爱","你"])

'爱'

>>>

random.sample()随机从前面的序列取出两位

>>>random.sample("hello",2)

['l','o']

>>>random.sample("hello",2)

['h','l']

>>>random.sample("hello",2)

['h','o']

>>>

random的洗牌功能:

>>>a=[1,2,3,4,5,6,7,8,9]

>>>random.shuffle(a)

>>>a

[6,3,7,4,1,8,9,2,5]

>>>

生成随机验证码的例子:

复制代码

1importstring

2importrandom

3a="".join(random.sample(string.ascii_lowercase,4))

4print(a)

5b="".join(random.sample(string.ascii_lowercase+string.digits,5))

6print(b)

7

8c="".join(random.sample(string.ascii_uppercase+string.digits+string.ascii_lowercase,4))

9print(c)

10d="".join(random.sample(string.ascii_letters+string.digits,4))

11print(d)

复制代码

运行结果如下:

复制代码

1D:

\python35\python.exeD:

/python培训/s14/day5/验证码2.py

2tbdy

36te4b

4Z2UA

5v8He

6

7Processfinishedwithexitcode0

复制代码

5、os模块

复制代码

1os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径

2os.chdir("dirname")改变当前脚本工作目录;相当于shell下cd

3os.curdir返回当前目录:

('.')

4os.pardir获取当前目录的父目录字符串名:

('..')

5os.makedirs('dirname1/dirname2')可生成多层递归目录

6os.removedirs('dirname1')若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

7os.mkdir('dirname')生成单级目录;相当于shell中mkdirdirname

8os.rmdir('dirname')删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdirdirname

9os.listdir('dirname')列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

10os.remove()删除一个文件

11os.rename("oldname","newname")重命名文件/目录

12os.stat('path/filename')获取文件/目录信息

13os.sep输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"

14os.linesep输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"

15os.pathsep输出用于分割文件路径的字符串

16os.name输出字符串指示当前使用平台。

win->'nt';Linux->'posix'

17os.system("bashcommand")运行shell命令,直接显示

18os.environ获取系统环境变量

19os.path.abspath(path)返回path规范化的绝对路径

20os.path.split(path)将path分割成目录和文件名二元组返回

21os.path.dirname(path)返回path的目录。

其实就是os.path.split(path)的第一个元素

22os.path.basename(path)返回path最后的文件名。

如何path以/或\结尾,那么就会返回空值。

即os.path.split(path)的第二个元素

23os.path.exists(path)如果path存在,返回True;如果path不存在,返回False

24os.path.isabs(path)如果path是绝对路径,返回True

25os.path.isfile(path)如果path是一个存在的文件,返回True。

否则返回False

26os.path.isdir(path)如果path是一个存在的目录,则返回True。

否则返回False

27os.path.join(path1[,path2[,...]])将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

28os.path.getatime(path)返回path所指向的文件或者目录的最后存取时间

29os.path.getmtime(path)返回path所指向的文件或者目录的最后修改时间

复制代码

6、sys模块

复制代码

1sys.argv命令行参数List,第一个元素是程序本身路径

2sys.exit(n)退出程序,正常退出时exit(0)

3sys.version获取Python解释程序的版本信息

4sys.path返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

5sys.platform返回操作系统平台名称

6sys.stdout.write('please:

')

复制代码

7、shutil模块

复制代码

1importshutil

2

3a=open("a.txt","r",encoding="utf-8")

4b=open("b.txt","w",encoding="utf-8")

5

6shutil.copyfileobj(a,b)

复制代码

运行够会复制一个文件b,将a文件中的内容复制到b文件中

shutil.copyfile("b.txt","c.txt")直接复制b.txt到c.txt

shutil.copymode(src,dst)仅拷贝权限。

内容,组,用户均不变

shutil.copystat(src,dst)拷贝状态的信息

shutil.copytree(src,dst,symlinks=false,ignore=none)递归拷贝文件

shutil.rmtree(path[,ignore_errors[,onerror]])

shutil.move(sr,dst)

递归移动文件

8、用于序列化的两个模块json&pickle

json,用于字符串和python数据类型间进行转换

pickle,用于python特有的类型和python的数据类型间进行转换

Json模块提供了四个功能:

dumps、dump、loads、load

pickle模块提供了四个功能:

dumps、dump、loads、load

9、关于shelve模块

代码例子:

复制代码

1#AUTHOR:

FAN

2importshelve

3importdatetime

4

5d=shelve.open("shelve_test")

6

7info={"name":

"dean","job":

"it","age":

23}

8

9d["name"]=info["name"]

10d["job"]=info["job"]

11d["date"]=datetime.datetime.now()

12d.close()

复制代码

运行结果,会生成如下三个文件

取出上述存的数据的代码如下:

1d=shelve.open("shelve_test")

2print(d.get("name"))

3print(d.get("job"))

4print(d.get("date"))

运行结果如下:

复制代码

1D:

\python35\python.exeD:

/python培训/s14/day5/shelve模块/shelve_test.py

2dean

3it

42016-08-2416:

04:

13.325482

5

6Processfinishedwithexitcode0

复制代码

10、正则re模块

复制代码

1'.'默认匹配除\n之外的任意一个字符,若指定flagDOTALL,则匹配任意字符,包括换行

2'^'匹配字符开头,若指定flagsMULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)

3'$'匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以

4'*'匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")结果为['abb','ab','a']

5'+'匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba")结果['ab','abb']

6'?

'匹配前一个字符1次或0次

7'{m}'匹配前一个字符m次

8'{n,m}'匹配前一个字符n到m次,re.findall("ab{1,3}","abbabcabbcbbb")结果'abb','ab','abb']

9'|'匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group()结果'ABC'

10'(...)'分组匹配,re.search("(abc){2}a(123|456)c","abcabca456c").group()结果abcabca456c

11

12

13'\A'只从字符开头匹配,re.search("\Aabc","alexabc")是匹配不到的

14'\Z'匹配字符结尾,同$

15'\d'匹配数字0-9

16'\D'匹配非数字

17'\w'匹配[A-Za-z0-9]

18'\W'匹配非[A-Za-z0-9]

19'\s'匹配空白字符、\t、\n、\r,re.search("\s+","ab\tc1\n3").group()结果'\t'

20'\S'匹配非空白字符

复制代码

r代表取消引号里面特殊字符的意义

最常用的匹配语法:

re.match从头开始匹配

re.search匹配包含

re.findall把所有匹配到的字符放到以列表中的元素返回

re.splitall以匹配到的字符当做列表分隔符

re.sub匹配字符并替换

下面是关于正则的例子帮助理解:

复制代码

1>>>re.match("^zhao","zhaofan123")

2<_sre.SRE_Matchobject;span=(0,4),match='zhao'>

3>>>re.match("^ww","zhaofan123")

4>>>

5从这里也可以看出,如果有返回则表示匹配到了,否则则是没有匹配到

6>>>res=re.match("^zhao","zhaofan123")

7>>>res

8<_sre.SRE_Matchobject;span=(0,4),match='zhao'>

9>>>res.group()#如果想要查看匹配的内容.group()

10'zhao'

11>>>

12匹配zhao后面以及数字

13>>>res=re.match("^zhao\d","zhao2323fan123")

14>>>res.group()

15'zhao2'

16匹配多个数字

17>>>res=re.match("^zhao\d+","zhao2323fan123")

18>>>res.group()

19'zhao2323'

20>>>

21

22查找特定字符

23>>>re.search("f.+n","zhao2323fan123")

24<_sre.SRE_Matchobject;span=(8,11),match='fan'>

25>>>

26>>>re.search("f.+n","zhao2323fan123n")

27<_sre.SRE_Matchobject;span=(8,15),match='fan123n'>

28>>>

29

30>>>re.search("f[a-z]+n","zhao2323fan123n")

31<_sre.SRE_Matchobject;span=(8,11),match='fan'>

32>>>

33$是匹配到字符串的最后

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1