模块:本质就是.py结尾的文件。从逻辑上组织python代码。
包: 本质就是一个目录,带有__init__.py文件,从逻辑上组织模块。
模块的分类:
1.标准库(内置的模块)
2.开源库(第三方库)
3.自定义模块
模块导入方法:
1.import + 模块名
2.from......import......
导入模块的本质,就是把被导入的.py文件解释执行一遍
导入包的本质,就是把__init__.py文件解释执行一遍。
1.时间模块(time与datetime)
1.timestamp(时间戳) 2.format_time(字符串时间) 3.struct_time(结构化时间)
1 import time 2 print(time.asctime()) #接受一个元组转化为固定形式的字符串时间Thu Jan 10 18:33:34 2019 3 print(time.altzone) #计算与utc时间相差的秒数 4 print(time.ctime()) #接受一个时间戳,转化为固定形式的字符串时间Thu Jan 10 18:33:34 2019 5 print(time.gmtime()) #将时间戳形式时间转化为结构化时间 utc时间 6 print(time.localtime()) #将时间戳形式时间转化为结构化时间 当地时间 7 print(time.mktime()) #将结构化时间转化为时间戳形式时间 8 print(time.strftime("%Y-%m-%d %H:%M:%S","结构化时间"))#将结构化时间转化为字符串时间 9 print(time.strptime("2016-12-10 10:12:13","%Y-%m-%d %H:%M:%S"))#将字符串时间转化为结构化时间 10 print(time.sleep()) #延长时间
时间的转化
1 import datetime 2 import time 3 print(datetime.datetime.now()) #现在的时间 固定格式 4 print(datetime.date.fromtimestamp(time.time())) #把时间戳转化为 2019-1-10 5 print(datetime.datetime.now()+datetime.timedelta(hours=+3))#当前时间加3小时, 6 print(datetime.datetime.now()+datetime.timedelta(days=-3))#当前时间减3天 7 print(datetime.datetime.now().replace(month=2,day=3)) #时间替换
2.随机模块(random)
1 import random 2 print(random.choice([1,2,3])) #列表中随机选择一个数 3 print(random.random()) #(0,1)随机浮点数 4 print(random.randint(1,3)) #[1,3]之间的随机整数 5 print(random.randrange(1,3) #(1,3)之间随机整数 6 print(random.seed(20)) #产生随机种子 7 print(random.sample(range(10),3)) #从(0,9)之间随机抽取3个数 8 l = [1,2,3] 9 random.shuffle(l) #随机打乱 10 print(l) 11 print(random.uniform(1,3)) #(1,3)之间随机浮点数
1 #随机生成验证码 2 import random 3 def check_code(num): 4 codes = "" 5 for i in range(num): 6 number = random.randint(0,9) 7 alpha = chr(random.randint(97,122)) 8 code = random.choice([number,alpha]) 9 codes += str(code) 10 return codes 11 l = check_code(5) 12 print(l)
1 import sys 2 print(sys.path) #返回当前模块的搜索路径 3 print(sys.argv) #命令行参数 ,第一个参数为文件本身路径 4 # sys.exit() #退出程序,正常退出exit() 5 print(sys.platform) #返回操作平台名称 6 print(sys.version) #返回Python 版本
2.os模块
1 import os 2 print(os.getcwd()) #当前文件目录 3 os.mkdir("11") #创建11目录 4 os.makedirs("11/22" ) #创建多级目录 5 print(os.listdir("G:EchizenPycharmProjectsonelearn3")) #列表形式列出该目录下的所有文件或子目录 6 os.rename("11/22",'11/33') #目录重命名 7 os.removedirs("11/33") #删除多级目录 8 print(os.stat("G:EchizenPycharmProjectsonelearn3day1.py")) #获取文件目录信息 9 print(os.environ) #获得文件环境 10 print(os.path.abspath("G:EchizenPycharmProjectsonelearn3day1.py")) #获取文件绝对路径 11 print(os.path.split("G:EchizenPycharmProjectsonelearn3day1.py")) #将路径分割成目录和文件,以元组返回 12 print(os.path.dirname("G:EchizenPycharmProjectsonelearn3day1.py"))#获得路径目录名,即split分割后的第一个 13 print(os.path.basename("G:EchizenPycharmProjectsonelearn3day1.py"))#获得路径文件,即split后的第二个 14 print(os.path.exists("G:EchizenPycharmProjectsonelearn3day1.py")) #判断是否存在该文件 15 print(os.path.isabs("G:EchizenPycharmProjectsonelearn3day1.py")) #判断是否为绝对路径 16 print(os.path.isfile("G:EchizenPycharmProjectsonelearn3day1.py")) #判断是否是一个文件 17 print(os.path.isdir("G:EchizenPycharmProjectsonelearn3"))#判断是否为一个目录 18 print(os.path.join("G:EchizenPycharmProjectsonelearn3","day3")) #连接 19 print(os.path.getatime("G:EchizenPycharmProjectsonelearn3day2.py")) #获得文件或目录最后存储时间 20 print(os.path.getmtime("G:EchizenPycharmProjectsonelearn3day2.py")
#不同包之间的导入操作 import sys,os print(sys.path) x = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.append(x) print(sys.path) import ML
3.re模块
'.'
默认匹配除
之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
'^'
匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r
"^a"
,
"
abc
eee"
,flags
=
re.MULTILINE)
'$'
匹配字符结尾,或e.search(
"foo$"
,
"bfoo
sdfsf"
,flags
=
re.MULTILINE).group()也可以
'*'
匹配
*
号前的字符
0
次或多次,re.findall(
"ab*"
,
"cabb3abcbbac"
) 结果为[
'abb'
,
'ab'
,
'a'
]
'+'
匹配前一个字符
1
次或多次,re.findall(
"ab+"
,
"ab+cd+abb+bba"
) 结果[
'ab'
,
'abb'
]
'?'
匹配前一个字符
1
次或
0
次
'{m}'
匹配前一个字符m次
'{n,m}'
匹配前一个字符n到m次,re.findall(
"ab{1,3}"
,
"abb abc abbcbbb"
) 结果
'abb'
,
'ab'
,
'abb'
]
'|'
匹配|左或|右的字符,re.search(
"abc|ABC"
,
"ABCBabcCD"
).group() 结果
'ABC'
'(...)'
分组匹配,re.search(
"(abc){2}a(123|456)c"
,
"abcabca456c"
).group() 结果 abcabca456c
'A'
只从字符开头匹配,re.search(
"Aabc"
,
"alexabc"
) 是匹配不到的
''
匹配字符结尾,同$
'd'
匹配数字
0
-
9
'D'
匹配非数字
'w'
匹配[A
-
Za
-
z0
-
9
]
'W'
匹配非[A
-
Za
-
z0
-
9
]
's'
匹配空白字符、 、
、
, re.search(
"s+"
,
"ab c1
3"
).group() 结果
' '
re.match 从头开始匹配
re.search 匹配包含
re.findall 把所有匹配到的字符放到以列表中的元素返回
re.splitall 以匹配到的字符当做列表分隔符
re.sub 匹配字符并替换
print(re.search("(?P<name>[a-z]{3})(?P<age>[0-9]{2})(?P<sex>[a-z]{3})","zqq24boy"))