内置模块

一  time 模块

 1 '2017-06-21'   #时间字符串
 2 import time
 3 #时间戳
 4 '''
 5 1970_01_01 0:0:0  -------------------最开始时间
 6 1970_01_01 0:0:1  ------------------ 以秒开始计算
 7 
 8 1971_01_01 0:0:0  -----------------------24*3600*365  以秒计算时间
 9 '''
10 #当前时间戳
11 # print(time.time())
12 
13 #时间对象     对象.方法
14 #print(time.localtime())
15 
16 # g=time.gmtime()
17 # print(g)
18 
19 #取部分时间
20 # s=time.localtime()   #
21 # print(s.tm_year)
22 
23 #将时间戳转换成结构化时间
24 # s=time.localtime(7552574592)
25 # print(s)
26 
27 #将结构化时间转换成时间戳
28 # s=time.mktime(time.localtime())   #
29 # print(s.tm_year)
30 
31 # g=time.mktime(time.gmtime())
32 # print(g)
33 
34 #时间字符串
35 # g='2012-02-23'
36 # print(g)
37 
38 #将结构时间转换成时间字符串
39 # s=time.strftime('%Y-%m-%d',time.localtime())
40 # print(s)
41 
42 #将字符串时间转换成结构化时间
43 # a=time.strptime('2012-02-23','%Y-%m-%d')
44 # print(a)
45 
46 #将时间戳转换成字符串时间,转换的时间字符串格式是定义好的
47 # print(time.ctime(2146897342))
48 
49 #将结构化时间转换成字符串时间,只需要提供结构化时间,不需要给他格式,就是返回一个固定时间,转换的时间字符串格式是定义好的
50 # print(time.asctime())
51 
52 #时间睡一下,相当于停多少时间,模拟了I/O操作。暂停时不会占用CPU
53 # time.sleep(1)
54 
55 #时间戳是就是一个浮点型的数字,标识着对应的年份
56 #结构化时间方便我们取决信息
57 #时间字符串为了让我们人能看懂
58 
59 
60 
61 # #小练习
62 # s='2017-6-21'
63 # struct_t=time.strptime(s,'%Y-%m-%d')   #先将字符串时间转换成结构化时间
64 # stamp_t=time.mktime(struct_t)      #然后再将结构化时间转换成时间戳
65 # new_stamp=stamp_t+3600*24*3        #然后再加上3天的时间戳
66 # new_etr_t=time.strftime('%Y-%m-%d',time.localtime(new_stamp))  #最后再转回去,转成字符串时间。
67 # print(new_etr_t)
View Code

二 random 随机模块

 1 #随机数模块
 2 # import random
 3 #
 4 # #返回一个floot浮点型数字,范围在0到1之间的浮点型数字
 5 # #print(random.random())
 6 #
 7 # #取整数,取头也取尾,随机取一个值
 8 # print(random.randint(1,6))
 9 #
10 # #取整数,顾头不顾尾,随机取一个值
11 # print(random.randrange(1,6))
12 #
13 # #随机取列表中的一个元素
14 # print(random.choice([1,4,7,2,0,6]))
15 #
16 # #随机取多个值,自己定义
17 # print(random.sample([1,5,6,76,7,4],3))
18 #
19 # #取该范围的浮点型数字
20 # print(random.uniform(1,4))
21 #
22 # #打乱列表中的数字
23 # l=[1,2,3,4,5,6]
24 # random.shuffle(l)
25 # print(l)
26 
27 
28 #练习,随机五位验证码,包括大小写字母,还有数字。
29 # import random
30 # def fang():
31 #     ret=''
32 #     for i in range(5):
33 #         a=random.randint(0,9)
34 #         b=chr(random.randint(97,122))
35 #         c=chr(random.randint(65,90))
36 #         s=random.choice([str(a),b,c])
37 #         ret=ret+s
38 #     return ret
39 # print(fang())
View Code

三 hashlib 模块  摘要算法

 1 #摘要算法
 2 # import hashlib
 3 # #返回一个32未16进制的数字,返回的16进制数字是定义好的
 4 # md5_obj=hashlib.md5()
 5 # md5_obj.update(b'hello')    #    5d41402abc4b2a76b9719d911017c592
 6 # print(md5_obj.hexdigest())
 7 #
 8 # #返回一个32未16进制的数字,返回的16进制数字是定义好的
 9 # md5_obj=hashlib.md5()
10 # md5_obj.update(b'helloworld')   #    fc5e038d38a57032085441e7fe7010b0
11 # print(md5_obj.hexdigest())
12 #
13 # #返回一个内容分成两个小的内容16进制的数字,返回的16进制数字和只返回那一个的结果一样
14 # md5_obj=hashlib.md5()
15 # md5_obj.update(b'hello')
16 # md5_obj.update(b'world')    #   fc5e038d38a57032085441e7fe7010b0
17 # print(md5_obj.hexdigest())
18 
19 #总结:在想要返回一个大内容的时候,可以把他分成多个小的内容,然后在一块返回结果。
20 #’’’
21 #摘要算法应用:文件一致性,登陆
22 #例如:
23 #username                              pwd
24 #方杰                                 623745594545
25 #975485445486448                      865835645731
26 #6583454589687                        5774234566555
27 
28 
29 #fang                                6467635485548887588
30 #jie                                 5436532437i87685865
31 #’’’
32 
33 #加盐:就是在需要返回的参数还没有在定义之前加入内容。
34 # import hashlib
35 # md5_obj=hashlib.md5(b'hello')
36 # md5_obj.update(b'fang')             #d621f78d93f9bd588acae089c88ff149
37 # print(md5_obj.hexdigest())
View Code

 四  os  模块

 1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
 2 
 3 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
 4 
 5 os.curdir 返回当前目录: ('.')
 6 
 7 os.pardir 获取当前目录的父目录字符串名:('..')
 8 
 9 os.makedirs('dirname1/dirname2') 可生成多层递归目录
10 
11 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
12 
13 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
14 
15 os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
16 
17 os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
18 
19 os.remove() 删除一个文件
20 
21 os.rename("oldname","newname") 重命名文件/目录
22 
23 os.stat('path/filename') 获取文件/目录信息
24 
25 os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
26 
27 os.linesep 输出当前平台使用的行终止符,win下为"	
",Linux下为"
"
28 
29 os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
30 
31 os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
32 
33 os.system("bash command") 运行shell命令,直接显示
34 
35 os.environ 获取系统环境变量
36 
37 os.path.abspath(path) 返回path规范化的绝对路径
38 
39 os.path.split(path) 将path分割成目录和文件名二元组返回
40 
41 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
42 
43 os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
44 
45 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
46 
47 os.path.isabs(path) 如果path是绝对路径,返回True
48 
49 os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
50 
51 os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
52 
53 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
54 
55 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
56 
57 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
58 
59 os.path.getsize(path) 返回path的大小
View Code

 五  sys 模块

 1 # import sys
 2 # sys.exit()   #推出程序,正常退出时是sys.exit(0)
 3 # sys.argv      #命令函参数,第一个元素是程序本身路径
 4 # sys.path      #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
 5 # sys.version    #获取python解释器的版本信息
 6 # sys.maxint    #最大的Int值
 7 # sys.platfrom   #返回icaozuo系统平台名称
 8 #
 9 #
10 #
11 # 小练习
12 # count=1
13 # while count<10:
14 #     print('ok')
15 #     if count==8:
16 #         #break        #终止了if判断的后面条件,但是while循环还会继续进行
17 #         sys.exit()  #程序在这后面的都结束。直接全部终止
18 #     count+=1
19 # print('ending')
20 #
21 #
22 #
23 #
24 # 小练习
25 #
26 # ret=sys.arge    #["模块.py","fang","666"]
27 # print(ret)   #["sys模块.py",'-u','fang','-p','666']
28 #             #  只有放在-u后面的是用户名,放在-p后面的是用户名密码。
29 # username=ret[1]
30 # password=ret[2]
31 # print(sys.argv)   #显示当前服务器的绝对路径,
32 # print('huijia')
33 # username=input('username:')   #io是一个阻塞状态
34 # password=input('password:')
35 # if username =='fang'and password=='666':
36 #     print('huijia')
37 #
38 # sys.path   #显示一堆路径,以列表的形式显示出来
39 # print(sys.path)  #['E:\文本编辑器\pycharm\方杰\目录\模块', 'E:\文本编辑器\pycharm', 'E:\python3.5\python36.zip',
40 #  'E:\python3.5\DLLs', 'E:\python3.5\lib', 'E:\python3.5', 'E:\python3.5\lib\site-packages']
41 # #寻找模块,从当前的路径下开始寻找,如果当前路径下没有,就会挨个的按照列表
42 # # 的顺序寻找下去,如果找到了,就不再寻找。
43 # import re
44 # import hashlib
45 # print(re.findall(r"hello","hello"))
46 #
47 #
48 # Base_dir=r'E:文本编辑器pycharm方杰阿豪'
49 # sys.path.append(Base_dir)
50 # import lesson1
51 # lesson1.foo()
52 # 不管是人家添加还是自己添加的模块,只要有路径,就会寻找到。
View Code

六  logging 模块  日志模块

 1 #日志模块:为我们记录一些信息
 2 # import logging
 3 
 4 # logging.basicConfig(
 5 #     # level=logging.INFO
 6 #     # level=logging.DEBUG
 7 #     level=logging.ERROR,
 8 #     # filename='log.txt',
 9 #     # filemode='a',  #追加的方式写入     #也可以写'w'是覆盖写入
10 #     format='%(asctime)s---%(filename)s---%(lineno)s---%(name)s--%(message)s'
11 # )#2017-06-22 15:55:37,614---logging.模块.py---14---root
12 # # 2017-06-22 15:55:37,659---logging.模块.py---15---root
13 # # 2017-06-22 15:55:37,659---logging.模块.py---16---root
14 #
15 #
16 # logging.debug('debug message')
17 # logging.info('info message')
18 # logging.warning('warning message')
19 # logging.error('error message')
20 # logging.critical('critical meddage')
21 
22 # #logging 对象
23 # import logging
24 #
25 # logger_obj=logging.getLogger()
26 #
27 # fh=logging.FileHandler('logger_file.txt')
28 # ch=logging.StreamHandler()
29 #
30 # #创建格式
31 # logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
32 # fh.setFormatter(format)
33 # ch.setFormatter(format)
34 # #
35 # # logger_obj.addHandler(fh)         #logger对象可以添加多个fh和ch对象
36 # # logger_obj.addHandler(ch)
37 #
38 # logger_obj.info('info')
39 # logger_obj.error('error')
40 # logger_obj.warning('warning')
41 # logger_obj.debug('debug')
42 #
43 #
44 # import logging
45 #
46 # def get_logger():
47 #     logger_obj=logging.getLogger()
48 #
49 #     fh=logging.FileHandler('logger_file.txt')              # 创建一个handler,用于写入日志文件
50 #     ch=logging.StreamHandler()           # 再创建一个handler,用于输出到控制台
51 #
52 #     #创建格式
53 #     logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
54 #     fh.setFormatter(format)
55 #     ch.setFormatter(format)
56 #     return logger_obj
57 # logger_obj=get_logger()
58 #     #
59 #     # logger_obj.addHandler(fh)
60 #     # logger_obj.addHandler(ch)
61 #
62 # logger_obj.info('info')
63 # logger_obj.error('error')
64 # logger_obj.warning('warning')
65 # logger_obj.debug('debug')
View Code

七 json 模块  有序化模块

 1 #序列化
 2 #import json
 3 
 4 
 5 # 有序化加入
 6 # import json
 7 #
 8 # fang={"name":'jie','age':18}
 9 # f=open('l.txt','w')
10 # hui=json.dumps(fang)
11 # print(hui)
12 # print(type(hui))
13 # f.write(hui)
14 # f.close()
15 #有序化返回
16 # import json
17 # f=open('l.txt','r')
18 # hui=f.read()
19 # fang=json.loads(hui)
20 # print(fang)
21 # print(type(fang))
22 
23 #有序化
24 # import json
25 # f=open('la.txt','r')
26 # hui=f.read()
27 # fang=json.loads(hui)
28 # print(fang)
29 # print(type(fang))
30 
31 
32 # import json
33 # fang={'name':'jie','age':18}
34 # f=open('hui.txt','w')
35 # dong=json.dumps(fang)
36 # print(dong)
37 # print(type(dong))
38 # f.write(dong)
39 # f.close()
40 
41 # import json
42 # f=open('hui.txt','r')
43 # dong=f.read()
44 # ai=json.loads(dong)
45 # print(ai)
46 # print(type(ai))
47 
48 #简写有序化
49 # import json
50 # fang={'name':'jie','age':18}
51 # f=open('hui.txt','w')
52 # json.dump(dic,f)
53 # f.close()
54 
55 #简写有序化返回
56 # import json
57 # f=open('hui.txt','r')
58 # a=json.load(f)
59 # print(a)
60 # print(type(a))
View Code

八  pickle 模块  只限于python中使用的有序化模块

 1 #  和json使用方法一样,仅仅换了一个名字。
 2 # 缺点:pickle仅仅用于python数据类型转换,不能再其他的语言之间进行使用。
 3 # 优点:能支持python的所有数据类型,所有数据类型之间都可以进行转换的。
 4 #
 5 
 6 #加入类容
 7 # import pickle
 8 #
 9 # a={'name':'b','age':22}
10 # # print(type(a))         #class 'dict'
11 # c=pickle.dumps(a)
12 # print(c)
13 # print(type(c))   #calss 'bytes'
14 #
15 # f=open('有序化对象——piskle','wb')  #注意’w‘是写入str,wb是写入bytes,c是’bytes‘
16 # f.write(c)         #    等价于piskle。dump(c,f)
17 # f.close()
18 #
19 #返回数据
20 # import pickle
21 # f=open('有序化对象——piskle','rb')
22 # h=pickle.loads(f.read())  #等同于h=pickle.liad(f)
23 # print(h)
24 # print(h['age'])
25 #
26 #
27 
28 
29 #练习
30 # import datetime
31 # d=datetime.datetime.now()
32 # print(d)
33 # print(type(d))
34 #
View Code

 九 re   模块  正则表达式

  1 #正则表达式的功能:字符串的模糊匹配查询。
  2 import re
  3 # ret=re.findall("方","方杰,方合意,方磊,光东,阿杰,李杰,方何军")    ##匹配出所有符合条件的元素
  4 # print(ret)
  5 
  6 #  .   可以代替除换行符以外任意一个元素,
  7 # ret=re.findall("方..","方杰,方合意,方磊,光东,阿杰,李杰,方何军")    ##匹配出所有符合条件的元素
  8 # print(ret)
  9 
 10 
 11 # ret=re.findall("方.","方杰,方合意,方磊,光东,阿杰,李杰,方何军")   #匹配出所有符合条件的元素
 12 # print(ret)
 13 
 14 # ^  匹配第一个 元素的类容,匹配不成功,也不会去匹配后面的元素
 15 # ret=re.findall("^方.","方杰,方合意,方磊,光东,阿杰,李杰,方何军")   #匹配出所有符合条件的元素
 16 # print(ret)
 17 
 18 # $  匹配该对象的最后一个内容,不会去匹配其他位置的内容
 19 # ret=re.findall("y..n$","方杰,方合意,方磊,光东,阿杰,李杰,方何军yuan")   #匹配出所有符合条件的元素
 20 # print(ret)
 21 
 22 # *(0到无穷次)  +(1到无穷次)  ?(0到1)  {}  :制定次数
 23 # ret=re.findall("d{16}","234214455,663255654534246,545556564367656653,4453576489780423")
 24 # print(ret)
 25 
 26 # ret=re.findall("333d*","333234214455,333255654534246,545556564367656653,4453576489780423")
 27 # print(ret)
 28 
 29 # ret=re.findall("333d+","3334214455,333255654534246,333,56564367656653,4453576489780423")
 30 # print(ret)
 31 
 32 # ret=re.findall('131d+?','1312312312')
 33 # print(ret)
 34 
 35 # ret=re.findall("d+.?d+","3555,8498,64.674,2344")
 36 # print(ret)
 37 
 38 #匹配整数
 39 # ret=re.findall("d","3334214455,3332546,333,56564356653,44580423")
 40 # print(ret)
 41 
 42 # ret=re.findall("d+","33342455,3332546,-333,5653,-4423")
 43 # print(ret)
 44 
 45 #可以匹配出负整数和正整数
 46 # ret=re.findall("-?d+","33342455,3332546,-333,5653,-4423")
 47 # print(ret)
 48 
 49 # ret=re.findall("d?","2342,43,7654,87")
 50 # print(ret)
 51 
 52 #转义符 
 53 
 54 #
  换行符
 55 
 56 #将原字符转换成普通符号
 57 # ret=re.findall(".com","www.baidu.com,www.youji.com,www.xiongdi.com,www.ss.cn")
 58 # print(ret)
 59 
 60 #将一些普通符号转换成特殊功能
 61 
 62 #w匹配任何字母数字字符; 它相当于类 [^a-zA-Z0-9_]
 63 # ret=re.findall("w","yuan323665534")
 64 # print(ret)
 65 
 66 #W  匹配任何非字母数字字符; 它相当于类 [^a-zA-Z0-9_]
 67 # ret=re.findall("W","yuan3236$655&34")
 68 # print(ret)
 69 
 70 # ret=re.findall("w+","yuan323665534")
 71 # print(ret)
 72 
 73 #d  匹配任何十进制数;      它相当于类 [0-9]。
 74 # ret=re.findall("d","yuan3236$655&34")
 75 # print(ret)
 76 
 77 #D  匹配任何非数字字符;    它相当于类 [^0-9]。
 78 # ret=re.findall("D","yuan3236$655&34")
 79 # print(ret)
 80 
 81 #s 匹配任何空白字符;      它相当于类 [ 	

fv]。
 82 # ret=re.findall("s","hello i love like")
 83 # print(ret)
 84 
 85 #S  匹配任何非空白字符;    它相当于类 [^ 	

fv]。
 86 # ret=re.findall("S","hello i love like")
 87 # print(ret)
 88 
 89 #  匹配一个特殊字符边界,比如空格 ,&,#等
 90 # ret=re.findall(r"i","hello i love like")
 91 # print(ret)
 92 
 93 # ret=re.findall(r"i","hello i love li$ke")
 94 # print(ret)
 95 
 96 # r
 97 # ret=re.findall(r"c\l","abcle")
 98 # print(ret)
 99 
100 #字符集[]:  在[]里面多选一的效果  一个字符集只匹配一个字符
101 # ret=re.findall(r"abc","abcjpofdabhiac")
102 # print(ret)
103 
104 #
105 # ret=re.findall(r"a[bc]","abcjpofdabhiac")
106 # print(ret)
107 
108 # ret=re.findall(r"a[bc]d","abdcjpofdabhiacd")
109 # print(ret)
110 
111 # ret=re.findall(r"a[b.c]d","abcjpofdabhia.dc")
112 # print(ret)
113 
114 
115 #字符集里面只有三个特殊符号:- ^ 
116 
117 # ret=re.findall(r"[0-9]","ds1246634347cvkdhsd")
118 # print(ret)
119 #
120 #
121 # ret=re.findall(r"[a-z]","ds1246634347cvkdhsd")
122 # print(ret)
123 #
124 # ret=re.findall(r"[A-Z]","ds1246DSJFKS47cvkdhsd")
125 # print(ret)
126 #
127 # ret=re.findall(r"[A-Za-z0-9]","ds1246634347cvkdhsd")
128 # print(ret)
129 
130 # ret=re.findall(r"a[d]c","ds12a34c7cvkdhsd")
131 # print(ret)
132 
133 
134 # ret=re.findall(r"[^d]","ds1246634347cvkdhsd")
135 # print(ret)
136 
137 
138 # ret=re.findall(r"[^da-z]","ds1246634347cvk#dhsd")
139 # print(ret)
140 
141 #字符集  |  或者的意思  要配合 ()用的
142 
143 # ret=re.findall("www.(w+).com","www.baidu.com,www.youji.com,www.xiongdi.com,www.ss.cn")
144 # print(ret)
145 
146 # ret=re.findall("www.(w+).(com|cn)","www.baidu.com,www.youji.com,www.xiongdi.com,www.ss.cn")
147 # print(ret)
148 
149 # ret=re.findall("www.(?:w+).(?:com|cn)","www.baidu.com,www.youji.com,www.xiongdi.com,www.ss.cn")
150 # print(ret)
151 
152 #分组  ()
153 # ret=re.findall("(fang)","fangffksdl;hfangfangfnag")
154 # print(ret)
155 #
156 # ret=re.findall("(fang)+","fangffksdl;hfangfangfnag")
157 # print(ret)
158 
159 # ret=re.findall("(方.{1,3}),","方杰归来,方合意,方磊,光东,阿杰,李杰,方何军,")    ##匹配出所有符合条件的元素
160 # print(ret)
161 
162 #只有匹配到了一项内容就不会在继续匹配了
163 # ret=re.search("(fang)+","fangffksdl;hfangfangfnag")
164 # print(ret)
165 # print(ret.group())
166 # 
167 # #没有匹配内容则会返回None,group()则会报错报错
168 # ret=re.search("(fakl)+","fangffksdl;hfangfangfnag")
169 # print(ret)
170 # print(ret.group())
171 
172 
173 
174 #match  只匹配字符串开头的位置
175 # ret=re.match("(fang)+","fangffksdl;hfangfangfnag")
176 # print(ret)
177 # print(ret.group())
178 
179 #开头位置匹配不上就会报错
180 # ret=re.match("(fang)+","sdffangffksdlaihngfangfnag")
181 # print(ret)
182 # print(ret.group())
183 
184 
185 
186 
187 # ret=re.search(r"blog-aticles-20[01]d","blog-aticles-2005")
188 # print(ret)
189 # print(ret.group())
190 #
191 #
192 # ret=re.search(r"blog-aticles-20[01]d-d+","blog-aticles-2005-12")
193 # print(ret)
194 # print(ret.group())
195 #
196 #
197 # ret=re.findall(r"blog-aticles-(20[01]d)-(d+)","blog-aticles-2005-12")
198 # print(ret)
199 #
200 #
201 # #命名分组
202 # ret=re.search(r"blog-aticles-(?P<year>20[01]d)-(d+)","blog-aticles-2005-12")
203 # print(ret.group('year'))
204 #
205 # ret=re.search(r"blog-aticles-(?P<year>20[01]d)-(?P<mansh>d+)","blog-aticles-2005-12")
206 # print(ret.group('mansh'))
View Code
 1 #贪娈匹配
 2 # ret=re.findall("abc+","abccccccccccccccgds")
 3 # print(ret)
 4 
 5 # ret=re.findall("abc{1,}","abccccccccccccccgds")
 6 # print(ret)
 7 
 8 #非贪娈模式
 9 # ret=re.findall("abc+?","abccccccccccccccgds")
10 # print(ret)
11 
12 # s="asfdhgfasflfhfas"
13 # ret=re.findall("as.*?as",s)
14 # print(ret)
15 
16 
17 #import re
18 #re.findall()
19 # ret=re.findall("abc(?:d)","abc34das")   #1返回的是列表的格式  2 findall优先筛选
20 # print(ret)
21 
22 #分割
23 # s="hello23fang54jie543jia"
24 # ret=re.split("d+",s)
25 # print(ret)
26 #
27 # #自定义分割
28 # s="hello23fang54jie543jia"
29 # ret=re.split("d+",s,1)
30 # print(ret)
31 
32 #同时返回分隔符
33 # s="hello23fang54jie543jia"
34 # ret=re.split("(d+)",s)
35 # print(ret)
36 
37 #替换
38 # ret="hello fang".replace("fang","jie")
39 # print(ret)
40 
41 #多个同时替换
42 # ret=re.sub("f.*?g","jieshao","hello fang fhog felscg")
43 # print(ret)
44 
45 #多个替换,同时显示替换词数
46 # ret=re.subn("f.*?g","jieshao","hello fang fhog felscg")
47 # print(ret)
48 
49 #编译
50 # obj=re.compile("d+")
51 # a=obj.findall("sfjdskghr7o456o474o56j5h")
52 #print(a)
53 # ret=obj.findall("sdg36ew4375g5445y")  #和re.findall一样,不过可以在多个使用时,同时使用一个编译
54 # print(ret)
55 
56 #迭代器
57 # ret=re.finditer("d+","sdj6jtqbvw4y4n56m456h876nl;wnB%$5ln56l7jb6kn7jiuk3vtb5jnil6756")
58 # print(ret)
59 # print(next(ret).group())
60 # print(next(ret).group())
61 # print(next(ret).group())
62 # print(next(ret).group())
63 # print(next(ret).group())
64 
65 
66 
67 #1 findall的优先级查询:
68 
69 
70 # import re
71 #
72 # ret=re.findall('www.(baidu|oldboy).com','www.oldboy.com')
73 # print(ret)#['oldboy']     这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可
74 #
75 # ret=re.findall('www.(?:baidu|oldboy).com','www.oldboy.com')
76 # print(ret)#['www.oldboy.com']
77 
78 
79 #2 split的优先级查询
80 
81 # ret=re.split("d+","yuan2egon56alex")
82 # print(ret)
83 #
84 # ret=re.split("(d+)","yuan2egon56alex")
85 # print(ret)
View Code

十 configparser模块 

 1 #文件的基本格式是  例如:
 2 # [DEFAULT]
 3 # ServerAliveInterval = 45
 4 # Compression = yes
 5 # CompressionLevel = 9
 6 # ForwardX11 = yes
 7 #
 8 # [bitbucket.org]
 9 # User = hg
10 #
11 # [topsecret.server.com]
12 # Port = 50022
13 # ForwardX11 = no
14 
15 #configparser使用的格式是:分为三段,每段相当于是一个字典的形式,然后字典里面在包含一个字典
16 #生成文件的方法是
17 #fang=configparser.ConfigParser()    #首先调用模块的对象,然后再赋值给一个对象
18 #fang["DEFAULT"]={"key1":"vales1","key2':"vales2"........}
19 #fang[ "自定义字典名称"]={"key1":"vales1","key2":'vales2".....}
20 #fang["自定义字典名称2”]={"key1":"vales1","key2":vales2"......}
21 #with open("要添加的路劲","w")as f:
22 #   fang.write(f)
23 
24 # import configparser
25 # #例如将下面内容写入到文件中
26 # fang=configparser.ConfigParser()
27 # fang["DEFAULT"]={
28 #         "ServerAliveInterval" :45,
29 #         "Compression" :"yes",
30 #         "CompressionLevel" : 9,
31 #         "ForwardX11" : "yes"
32 # }
33 # fang["bitbucket.org"]={"User": "hg"}
34 # fang["topsecret.server.com"]={"Port" : 50022,"ForwardX11"  :"no"}
35 # with open("yuan.txt","w")as f:
36 #     fang.write(f)
37 ##创建的第一个字段名称必须是DEFAULT名称,后面创建的字段可以自定义名称,第一个字段创建的内容会在后面创建的每一个字段中自动添加上去。
38 #
39 # #操作文件:读与写操作
40 # import configparser
41 # jie=configparser.ConfigParser()
42 # jie.read("yuan.txt")
43 # print(fang.sections())   #查字段的信息
44 #
45 # import configparser
46 # jie=configparser.ConfigParser()
47 # jie.read("yuan.txt")
48 # print('topsecret.server.com' in fang)  #查看字段是否在该字典里
49 #
50 #
51 # import configparser
52 # jie=configparser.ConfigParser()
53 # jie.read("yuan.txt")
54 # print(fang.items("topsecret.server.com"))  #取出某个字段的内容
55 
56 # import configparser
57 #
58 # config = configparser.ConfigParser()
59 #
60 # #---------------------------查找文件内容,基于字典的形式
61 #
62 # print(config.sections())        #  []
63 #
64 # config.read('example.ini')
65 #
66 # print(config.sections())        #   ['bitbucket.org', 'topsecret.server.com']
67 #
68 # print('bytebong.com' in config) # False
69 # print('bitbucket.org' in config) # True
70 #
71 #
72 # print(config['bitbucket.org']["user"])  # hg
73 #
74 # print(config['DEFAULT']['Compression']) #yes
75 #
76 # print(config['topsecret.server.com']['ForwardX11'])  #no
77 #
78 #
79 # print(config['bitbucket.org'])          #<Section: bitbucket.org>
80 #
81 # for key in config['bitbucket.org']:     # 注意,有default会默认default的键
82 #     print(key)
83 #
84 # print(config.options('bitbucket.org'))  # 同for循环,找到'bitbucket.org'下所有键
85 #
86 # print(config.items('bitbucket.org'))    #找到'bitbucket.org'下所有键值对
87 #
88 # print(config.get('bitbucket.org','compression')) # yes       get方法取深层嵌套的值
89 #
View Code

十一 subpeocess   模块  命令模块

 1 #调用系统的命令
 2 # import subprocess
 3 #
 4 # #  创建一个新的进程,与主进程不同步  if in win: s=subprocess.Popen('dir',shell=True)
 5 # s=subprocess.Popen('ls')
 6 # s.wait()                  # s是Popen的一个实例对象
 7 #
 8 # print('ending...')
 9 # import subprocess
10 # s=subprocess.Popen("dir",shell=True)  #Popen是一个类,开启了新的进程,
11 #print("ending")                                     #两个抢用CPU,看谁的速度快,就先打印谁
12 
13 # s=subprocess.Popen("dir",shell=True)  #制定谁先使用CPU
14 # s.wait()
15 # print("ending")
16 
17 # import subprocess
18 # s=subprocess.Popen("Ls-L",shell=True)   #命令带参数
19 
20 #子进程的文本流控制
21 #可以在Popen()建立子进程的时候改变标准输入、标准输出和标准错误,并可以利用subprocess.PIPE将多个
22 #子进程的输入和输出连接在一起,构成管道(pipe):
23 # import subprocess
24 # s=subprocess.Popen("Ls-L",shell=True,stdout=subprocess.PIPE)
25 # print(s.stdout.read())            #拿到一个字节
26 #
27 # import subprocess
28 # s=subprocess.Popen("Ls-L",shell=True,stdout=subprocess.PIPE)
29 # print(s.stdout.read().decode("gbk"))    #进行一个转换
30 
31 #当我们想要更个性化我们的需求的时候,就要转向Popen类,该类生成的对象用来代表子进程。刚才我们使用到了一个wait方法
32 
33 #此外,你还可以在父进程中对子进程进行其它操作:
34 
35 # s.poll() # 检查子进程状态
36 # s.kill() # 终止子进程
37 # s.send_signal() # 向子进程发送信号
38 # s.terminate() # 终止子进程
39 #
40 # s.pid:子进程号
41 
42 '''
43 subprocess.call()
44 
45 父进程等待子进程完成
46 返回退出信息(returncode,相当于Linux exit code)
47 
48 
49 subprocess.check_call()
50 父进程等待子进程完成
51 返回0,检查退出信息,如果returncode不为0,则举出错误subprocess.CalledProcessError,该对象包含
52 有returncode属性,可用try…except…来检查
53 
54 
55 subprocess.check_output()
56 父进程等待子进程完成
57 返回子进程向标准输出的输出结果
58 检查退出信息,如果returncode不为0,则举出错误subprocess.CalledProcessError,该对象包含
59 有returncode属性和output属性,output属性为标准输出的输出结果,可用try…except…来检查。
60 
61 
62 '''
View Code

 十二  模块和包的调用

1 在同一个目录下调用模块

  1 #创建模块1
  2 def func():
  3     print("func")
  4 
  5 #创建模块2
  6 x=10
  7 
  8 def get():
  9     print(x)
 10 
 11 def set():
 12     global x
 13     x=100
 14 
 15 #创建模块3
 16 print("fang  1")
 17 
 18 def foo():
 19     print("foo")
 20 
 21 def da():
 22     print("da")
 23 
 24 x=100
 25 print("fang 2")
 26 
 27 
 28 
 29 #使用方法
 30 # import sys
 31 #
 32 # print(sys.path)    #查看查找路径的顺序,将执行文件的目录路径插入到sys.path的第一个位置
 33 #
 34 
 35 #方式一   #推荐
 36 #import fang1
 37 # import fadng
 38 #方式二
 39 # import fang1,fadng
 40 
 41 
 42 
 43 # fang1.foo()
 44 # fadng.func()
 45 #################调用过程
 46 # import fang1    #第一次调用直接存到了内存
 47 # import fang1   #第二次调用,不会在执行该模块,只是完成一次引用
 48 
 49 
 50 
 51 #import的两个过程: 1 创建一个新的名称空间,2  执行被调用的模块
 52 
 53 
 54 # import hui
 55 #
 56 # x=12
 57 #
 58 # print(hui.x)  #10
 59 # hui.get()     #10
 60 # hui.set()
 61 # hui.get()    #100
 62 #
 63 # print(x)    #12
 64 #
 65 # import fadng as fang2    #修改模块的名字
 66 #
 67 # fang2.func()
 68 
 69 
 70 #总结,每个模块都是独立的名称空间,定义在这个模块中的函数,
 71 # 把这个模块的名称空间当做全局名称空间,这样我们在编写自己
 72 # 的模块时,就不用担心我们定义在自己模块中全局变量会在被导入
 73 # 时,与使用者的全局变量冲突
 74 
 75 #import的使用在于同一个目录使用
 76 #########################################from   。。。。import 。。。
 77 #import fang1
 78 
 79 
 80 # 自定义执行某个模块里的内容,可以多个同时进行
 81 # from fang1 import x
 82 # from fang1 import foo
 83 # from fang1 import da
 84 # print(x)
 85 # foo()
 86 # da()
 87 
 88 
 89 #自定义执行某个模块的类容,多个同时可以被引用,上面的简写。
 90 # from fang1 import x,foo,da
 91 # print(x)
 92 # foo()
 93 # da()
 94 
 95 #指定某个模块里的内容被引用,可以随时执行。相当于引用了一个变量
 96 # #使用时要慎用
 97 # from fang1 import *
 98 # print(x)
 99 # foo()
100 # da()
101 #
102 
103 # from fang1 import *
104 # def foo():
105 #     print("ok")
106 # foo()
107 
108 # def foo():
109 #     print("ok")
110 # from fang1 import *
111 #
112 # foo()
113 
114 
115 # from fang1 import *
116 # x=12
117 # print(x)
118 
119 # x=12
120 # from fang1 import *
121 #
122 # print(x)
View Code

2  在同级目录下调用子模块

 1 #创建模块1
 2 def add(x,y):
 3     print(x+y)
 4 
 5 
 6 #创建模块2
 7 import logging
 8 
 9 def get_logger():
10     logger=logging.getLogger()
11     fh=logging.FileHandler("lei.txt")
12     logger.addHandler(fh)
13 
14     return logger
15 
16 
17 #导入模块的方法
18 
19 #包中模块的调用
20 #组织模块的方式:包
21 
22 #在python中,包可以理解成一个文件夹,但是每一个文件夹必须要有一个__init__.py模块
23 
24 #包和文件夹的区别在于有没有__init__.py模块
25 
26 #from  包   import  模块名
27 
28 # from dong import  lei
29 #
30 # a=lei.get_logger()
31 # a.error("error")
32 #
33 # from dong.ljr import aa
34 # aa.add(2,5)
View Code

3 在两个同级目录下调用模块

 1 #创建模块1
 2 def add(x,y):
 3     print(x+y)
 4 
 5 
 6 #创建模块2
 7 import logging
 8 
 9 def get_logger():
10     logger=logging.getLogger()
11     fh=logging.FileHandler("lei.txt")
12     logger.addHandler(fh)
13 
14     return logger
15 
16 
17 
18 #导入模块的方法
19 import sys
20 import os
21 
22 #路径给写死了
23 #sys.path.append(r"E:文本编辑器pycharm方杰目录模块2jiedong")
24 
25 print(__file__)    #打印当前执行目录的路径
26 
27 #     #上上级绝对路径  #上一级绝对路径    #当前绝对路径
28 a_b=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#
29 
30 print(a_b)
31 
32 sys.path.insert(0,a_b)
33 from lei import  get_logger
34 
35 a=get_logger()
36 a.error("error")
37 
38 from ljr import aa
39 aa.add(2,5)
View Code

4 __name__

 1 当前模块下
 2 def foo():
 3     print("ok")
 4 #
 5 #
 6 # def main():
 7 #     foo()
 8 #
 9 if __name__=="__main__":  #推荐添加上这种格式
10     foo()
11 #
12 #print(__name__)
13 
14 #name 就是main
15 
16 
17 
18 调用的结果
19 import name   #__name__在调用的时候打印的是当前模块的名称
20 
21 
22 
23 #在上级目录往下寻找包和模块的格式是
24 #from   包.包   import 模块名字
25 #或者是 from  包.包.模块   import 调用对象
26 
27 # from dong.ljr import aa
28 # aa.add(2,5)
29 #
View Code
原文地址:https://www.cnblogs.com/fangjie0410/p/7062105.html