python123第五章_python 3.5学习笔记(第五章)

本章内容

1、什么是模块

2、模块的导入方法

3、搜索路径

4、重要标准库

一、什么是模块

1、模块本质上是一个以.py 结尾的python文件,包含了python对象定义和python语句。

2、模块是用来从逻辑上组织python代码(定义变量、函数、类、逻辑等)以实现某种功能

3、包:包含多个模块的文件夹(包中要有一个__init__.py的文件,文件内容可以是空的)

二、导入模块

1、完全导入

import 模块1[, 模块2[,... 模块N]

from 包名 import 模块名

import test 相当于把test中的所有代码都赋值给了test这个变量

注:

(1)建议每一个模块都单独导入便于阅读

(2)也可以使用 from module_name import * 来导入模块中的所有功能,但是不建议这样做

(3)如果模块名字太长,导入后调用会不方便,可以使用下面的方法

import 原模块名 as 新模块名

(4)一个模块只能被导入一次

2、部分导入

from 模块名 import 方法名

3、导入包

import包名#只执行init文件中的code

import包名.模块名#既执行init文件中的code,也会执行导入的模块中的code

小结:

1、导入模块的本质是把python文件执行一遍

2、导入包的本质是执行包下的__init__.py 文件

三、搜索路径

import module_name-->module_name.py-->module_name.py的路径-->sys.path-->在当前目录下寻找-

->找父集目录【os模块-->os.path.dirname(os.path.abspath(__file__))】

当导入一个模块的时候,python解释器对模块位置的搜索顺序是:

1、当前目录

2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。

3、如果都找不到,Python会察看默认路径。

四、重要标准库

1、time标准库

1)time模块中时间的表示方法有三种:

a、 timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量

b、struct_time时间元组,共有九个元素组 。

time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=20, tm_min=20, tm_sec=45, tm_wday=6, tm_yday=140, tm_isdst=0)2018

c、format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。(如:年-月-日-时- 分-秒)

2)time模块中的内置方法

a、time()

——return current time in seconds since the Epoch as a float

#获取时间戳(秒)

importtime

a=time.time()print(a)

》1526822821.9055681

3)sleep()

——delay for a number of seconds given as a float 、

#程序休眠

importtime

time.sleep(3)print("休眠3s")

4)gmtime()

—— convert seconds since Epoch to UTC tuple

#把时间戳转换为struct_time的格式,默认对当前时间进行转换,转换结果是utc时区的时间

importtime

a=time.gmtime()print(a)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=13, tm_min=31, tm_sec=24, tm_wday=6, tm_yday=140, tm_isdst=0)

5)localtime()

——convert seconds since Epoch to local time tuple

#把时间戳转换为struct_time的格式,默认对当前时间进行转换,转换结果是本地时区的时间

importtime

a=time.localtime()print(a)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=33, tm_sec=1, tm_wday=6, tm_yday=140, tm_isdst=0)

注意:mgtime() 和 loacltime() 之间相差8个小时。

6)asctime()

—— convert time tuple to string

#接收的变量是元组

importtime

a=time.localtime()

b=time.asctime(a)print(a)print(b)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=38, tm_sec=4, tm_wday=6, tm_yday=140, tm_isdst=0)

》Sun May20 21:38:04 2018

7)ctime()

—— convert time in seconds to string

#接收的变量是时间戳

importtime

a=time.time()

b=time.ctime(a)print(a)print(b)

》1526823558.3019936》Sun May20 21:39:18 2018

8)mktime()

——convert local time tuple to seconds since Epoch

#把struct_time转换为时间戳的形式

importtime

a=time.localtime()

b=time.mktime(a)print(a)print(b)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=40, tm_sec=33, tm_wday=6, tm_yday=140, tm_isdst=0)

》1526823633.0

9)strftime()

——convert time tuple to string according to format specification

#把元组格式的时间转换为格式化的字符串格式的时间

importtime

a=time.localtime()

b= time.strftime("%Y-%m-%d %H:%M:%S",a)print(a)print(b)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=45, tm_sec=7, tm_wday=6, tm_yday=140, tm_isdst=0)

》2018-05-20 21:45:07

10)strptime()

——parse string to time tuple according to format specification

#把格式化的字符串格式的时间转换为元组格式的时间

importtime

a=time.localtime()

b= time.strftime("%Y-%m-%d %H:%M:%S",a)

c= time.strptime(b,"%Y-%m-%d %H:%M:%S")print(a)print(b)print(c)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=47, tm_sec=17, tm_wday=6, tm_yday=140, tm_isdst=0)

》2018-05-20 21:47:17》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=47, tm_sec=17, tm_wday=6, tm_yday=140, tm_isdst=-1)

2、datatime标准库

1)datetime.datetime.now()

——当前时间

importdatetimeprint(datetime.datetime.now()) #当前时间

》2018-05-20 21:53:21.906109

2)replace()

——修改当前时间

importdatetime

a_time=datetime.datetime.now()print(a_time)

b_time= a_time.replace(year=1,month=1,day=1,minute=0,hour=0,second=0)print(b_time)

》2018-05-20 21:55:57.781579》0001-01-01 00:00:00.781579

3)timedelta()

——时间延迟

importdatetimeprint("当前时间:",datetime.datetime.now())print(datetime.datetime.now()+datetime.timedelta(3)) #当前时间加三天

print(datetime.datetime.now()+datetime.timedelta(-3)) #当前时间减三天

print(datetime.datetime.now()+datetime.timedelta(hours=3)) #当前时间加三个小时

print(datetime.datetime.now()+datetime.timedelta(hours=-3)) #当前时间减三个小时

print(datetime.datetime.now()+datetime.timedelta(minutes=30)) #当前时间加30分钟

》当前时间: 2018-05-20 21:59:19.389405》2018-05-23 21:59:19.389405》2018-05-17 21:59:19.389405》2018-05-21 00:59:19.389405》2018-05-20 18:59:19.389405》2018-05-20 22:29:19.389405

3、random标准库

1)随机取浮点数

(a)不指定随机区间

importrandomprint(random.random())

》0.23569079391833148

(b)指定随机区间

importrandomprint(random.uniform(1,10))>>>6.12050957632076

#包括1和10

2)随机取整数

importrandomprint(random.randint(1,3))#包括1和3

print(random.randrange(1,3))

#包括1但是不包括3

3)传入参数,然后在参数中随机取出内容

(a)从传入的参数中随机取一个值

importrandomprint(random.choice("sfbuewahelih"))

》f

(b)从传入的内容中随机取n位

importrandomprint(random.sample("nioasfgje9gh",3))

#取3位,结果以列表的形式呈现并且是序的

》['s', 'n', 'a']

4)打乱顺序

importrandom

items= [1,2,3,4,5]print(items)

random.shuffle(items)print(items)>>>[1, 2, 3, 4, 5]

[2, 4, 5, 1, 3]

5)利用random模块实现一个简单的验证码功能

importrandom

checkcode= ''

for i in range(5):

current= random.randint(0,5)if current ==i:

tmp= chr(random.randint(65,90))else:

tmp= random.randint(0,9)

checkcode+=str(tmp)print(checkcode)

4、os模块

提供对操作系统进行调用的接口

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

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

3)os.curdir :返回当前目录

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

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

6)os.removedirs("dirname1") : 若目录为空,则删除,并递归到上一级目录,如果仍然为空,则继续删除,以此类推

7)os.mkdir("dirname") : 生成单级目录,相当于shell中的mkdir dirname

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

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

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

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

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

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

14)os.linesep :输出当前平台使用的行终止符(换行符),win下为“\t\n” , Linux 下为“\n”

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

16)os.name : 输出字符串指示当前使用平台。 win->"nt", Linux->"posix"

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

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

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

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

21)os.path.dirname(path) : 返回path的目录。其实就是os.path.split(path)的第一个元素

22)os.path.basename(path) : 返回path最后的文件名。如果path以 / 或 \ 结尾,那么就会返回空值。

23)os.path.exists(path) : 如果path存在,返回True

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

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

26)os.path.isdir(path) :如果path是一个存在的目录,则返回true,否则返回false

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

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

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

5、sys模块

1) sys.argv : 实现从程序外部向程序传递参数

2) sys.exit([arg]) : 程序中间的退出,arg=0为正常的退出

3) sys.getdefaultencoding() : 获取系统当前编码,一般默认为ascii

4) sys.setdefaultencoding() : 设置系统默认编码,执行dir(sys) 时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys) ,

再执行setdefaultencoding('utf-8'), 此时将系统默认编码设置为utf-8。

5) sys.getfilesystemencoding() :  获取文件系统使用编码方式,windows下返回“mbcs”,mac下返回“utf-8”。

6) sys.path : 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。

7) sys.platform : 获取当前系统平台

6、shutil模块

可以复制(copy),可以压缩(zip)

参考:https://blog.csdn.net/ff_smile/article/details/78081909

7、Configparser模块

参考:https://blog.csdn.net/miner_k/article/details/77857292

8、xml模块

参考:https://www.jb51.net/article/114411.htm

9、shelve模块

参考:https://www.jb51.net/article/118198.htm

10、Hashlib模块

参考:https://blog.csdn.net/seymour163/article/details/53448029

11、Hmac模块

参考:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0015108777177966ef0f4f8510a41b3b8c48cdcf7047b2d000

12、正则表达式Re模块

基础语法:

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

2) '^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(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}","abb abc abbcbbb") 结果'abb','ab','abb']

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

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

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

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

13) '\d'    匹配数字0-9

14) '\D'    匹配非数字

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

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

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

18)'(?P...)' 分组匹配 re.search("(?P[0-9]{4})(?P[0-9]{2})(?P[0-9]{4})","371481199306143242").groupdict("city")

结果{'province':'3714','city':'81','birthday':'1993'}

常用语法:

1) re.match("","") 从头开始匹配

2) re.search("","") 从整个文本中来搜索

3) re.findall("","") findall没有group方法

4) re.split("","") 按照指定内容进行分割

5) re.sub("匹配的内容","指定内容","待匹配项"[, count = n])

将匹配到的内容更换为指定内容,count 表示需要更换的次数,当count=2时,只更换匹配到的前两个

6) ^ 匹配字符的开头

7) \d 匹配一个数字

8) \d+ 匹配一个或多个数字

9) $ 以最后一个要匹配的字符结尾

10) [a-z] 从小写a到小写z

11) [a-zA-Z] 从小写a到大写Z

12) [a-zA-Z0-9] 从小写a到数字9

13) re.search("[a-z]+","adasfAfsaB",flags=re.I)

flags=re.I 表示忽略大小写   flags=re.M 表示多行模式,改变'^'和'$'的行为   flags=re.S 表示点任意匹配模式,改变'.'的行为

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

string 长度_String源码解析

本章源码分析基于JDK1.7实现的接口String类被final修饰词修饰,代表不可修改的特性,它实现了三个接口,Serializable是序列化接口,Compareble是排序接口,Char是字符序列接口。主要成员变量char[]:String通过c…

将你一张表的值覆盖_山西联通携手华为完成长风商务区宏微协同,立体覆盖,打造5G精品网络...

近日,中国联通山西分公司(以下简称“山西联通”)在太原长风商务区继5G CA超高速率升级之后,又针对长风商务区两层活动区域进行了5G宏微协同的立体覆盖,实现了该区域5G网络的连续部署。长风商务区建筑结构设计新颖,占地面积3.06平方…

16速 java_不停歇的 Java 即将发布 JDK 16,新特性速览!

之前在 JDK 15 中预览的密封类和接口限制其余类和接口能够扩展或实现它们。该计划的目标包括,容许类或接口的做者控制负责实现它的代码,提供比访问修饰符更声明性的方式来限制超类的使用,以及经过提供模式分析的基础来支持模式匹配的将来方向…

局域网内文件传输速度_详解蒲公英路由器组网 实现文件共享

蒲公英路由器,除了具备普通路由器的功能之外,如图:最大的特色是可以实现智能组网:最大的特色是可以实现智能组网:采用全新自主研发的Cloud VPN技术替代传统VPN,基于SD-WAN智能组网方案,快速组建…

java emoji显示乱码_Java 解决Emoji表情过滤问题

Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错。原因:UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。方法1.将已经建好的表也转换成utf8mb42&#xff0…

mongotemplate中save抛出异常_异常处理的三个好习惯 | Python 工匠

文 | piglei 编辑 | EarlGrey推荐 | 编程派(微信ID:codingpy)前言如果你用 Python 编程,那么你就无法避开异常,因为异常在这门语言里无处不在。打个比方,当你在脚本执行时按 ctrlc 退出,解释器就会产生一个 KeyboardI…

java 百度网盘上传_使用pcs api往免费的百度网盘上传下载文件的方法

百度个人云盘空间大,完全免费,而且提供了pcs api供调用操作文件,在平时的项目里往里面保存一些文件是很实用的。环境准备:开通读写网盘的权限及获取access_token:http://blog.csdn.net/langyuezhang/article/details/47206621百度…

python缩进教学_Python缩进和选择学习

缩进Python最具特色的是用缩进来标明成块的代码。我下面以if选择结构来举例。if后面跟随条件,如果条件成立,则执行归属于if的一个代码块。先看C语言的表达方式(注意,这是C,不是Python!)if ( i > 0 ){ x 1; y 2;}如果i …

php如何新建xml文件,PHP中的生成XML文件的4种方法分享

生成如下XML串Xml代码title1content12009-10-11title2content22009-11-11方法I.【直接生成字符串】使用纯粹的PHP代码生成字符串,并把这个字符串写入一个以XML为后缀的文件。这是最原始的生成XML的方法,不过有效!$data_array array(array(ti…

组态王能直接读取仪表数据吗_液晶多功能网络电力仪表PD800H

液晶多功能网络电力仪表PD800H-H44三相三线多功用电力表面,一般也被称作网络电力表面,它是一种数字化的监控设备,其功用集成了电量测量,情况监控,远程通讯为一体,作业原理上选用了现代核算机技术和数字信号…

python程序显示自己的版权_手把手教你Pycharm皮肤主题及个性化设置,python程序员必备-Go语言中文社区...

1.设置IDE皮肤主题File -> Settings -> Appearance -> Theme -> 选择“Alloy.IDEA Theme”根据自己的喜好设置字体大小,以及样式。2.修改字体大小File -> Settings > Editor -> Colors & Fonts -> Font -> Size -> 设置为“14”3…

java多线程activemq,多线程JMS客户端ActiveMQ

我正在使用以下代码创建多个JMS会话,以供多个使用者使用消息。我的问题是代码以单线程方式运行。即使消息存在于队列中,第二个线程也无法接收任何内容,而是继续轮询。同时,第一个线程完成对第一批的处理,然后返回并使用…

python cnn 实例_基于CNN的纹理合成实践【附python实现】

Q0: Preliminary knowledge of Texture SynthesisBaseline请见此处,下文所有的代码修改均建立此代码基础之上。1. 纹理合成简述​纹理合成(Texture Systhesis)技术主要应用于计算机图形学等领域,被用于模拟几何模型的表面细节、增强绘制模型的真实感。不…

php使用jasperreport,php-报表引擎指南(Pentaho,JasperReports,BIRT)

我在各种论坛和他们的网站上花费了大约4-5个小时,研究可以帮助我发展的报告工具.我是使用这种工具的新手,可以使用一些特定的指导.我正在开发一个Web应用程序,该应用程序将托管在一台服务器上,但是多个用户可以通过登录进行访问.每个用户将拥有自己的帐户,并且只能访问仅与与其…

python中dlib库_python 基于dlib库的人脸检测的实现

本周暂时比较清闲,可以保持每日一更的速度。国外身份证项目新增需求,检测出身份证正面的人脸。最开始考虑mobilenet-ssd,经同事提醒,有现成的人脸库dlib,那就用传统方法尝试一下。dlib安装dlib的安装小费一波周折&…

php养老院管理系统,XYCMS养老院建站系统 v3.8

XYCMS养老院建站系统是一个专为养老院而设计的养老院建筑系统。中心信息管理:包括基本信息管理,添加,问答中心信息管理新闻动态管理:管理新闻信息内容,管理相关分类,添加或者删除生活环境内容管理&#xff…

php 修改文件访问时间,PHP中获取文件创建日期、修改日期、访问时间的方法

php获取文件创建时间、修改时间常用代码filemtime ( string filename )返回文件上次被修改的时间,出错时返回 FALSE。时间以 Unix 时间戳的方式返回,可用于 date()。例如:$afilemtime("log.txt");echo "修改时间:&…

超过响应缓冲区限制_Nginx如何限制并发连接数和连接请求数?

全网最全1500份Java学习资料、500份BAT面试真题:关注公众号,输入“面试题”,获取提取码!首先讲解两个算发:算法思想是:令牌以固定速率产生,并缓存到令牌桶中;令牌桶放满时&#xff0…

Php公钥加密data是空,php 生成加密公钥加密私钥实例详解

php 生成加密公钥加密私钥实例详解生成公钥私钥 win下必须要openssl.cof支持 liunx一般已自带安装$config array(//"digest_alg" > "sha512","private_key_bits" > 512, //字节数 512 1024 2048 4096 等"private_key_type" >…

python句柄无效_subprocess.Popen 运行windows命令出现“句柄无效”报错的解决方法

【代码笔记】iOS-关于UIFont的一些define一,效果图. 二,工程图. 三,代码. RootViewController.h #import interface RootViewController ...JQuery Datatables Dom 和 Language 参数详细说明http://linleizi.iteye.com/blog/2086435 *********************************** Data …