py常用模块
1.定义
- 模块:用来从逻辑上组织py的代码,如变量、函数、类、逻辑),本质就是py结尾的python文件(文件名test.py,模块名就是test)
- 包:用来从逻辑上组织模块的,本质就是一个目录,必须带有一个__init__.py文件
2. 导入方法
- import module_name[,module 2]
- from module_name import * ###将module-name中所有的方法都导入了,不建议用
- from module_name import m1,m2,m3 ###直接执行m1,m2,m3,不要前缀
- from module_name import [logger模块内置方法名] as [别名]
- import pypackage, ###被导入package下面的__init__.py文件被执行
- 路径
os.path.dir(os.path.dirname(os.parh.abspath(__file)))
3. 本质
- 导入模块本质,就是把python文件解释一遍
- 导入包的本质就是执行该包下面的__init__.py文件,可以在init文件中加载同级目录下面的所有py模块 ### from . import py_module
4. 导入优化
- from py_module import functions as 别名
5. 模块的分类
- 标准库:
- 开源模块:
- 自定义模块
标准库:
1. time和datatime (https://www.cnblogs.com/sunshineyang/p/6818834.html)
- 时间戳到元组转换,localtime(),struct_time()
http://blog.51cto.com/egon09/1840425
2. random 模块
print(random.random())
print(random.randint(1,8))
print(random.randrange(1,6))
print(random.choice("dafasdafdfsa"))
print(random.choice(["dasf","dasfa131","aaa","AAA!!!","uuu"]))
checkcode = '' for i in range(4): current = random.randrange(0,4) if current ==i: current = chr(random.randint(65,90)) #current = random.randint(0,9) else: current = random.randint(0, 9) checkcode = checkcode +str(current) print(checkcode)
3. os模块
print(os.getcwd())
#os.makedirs(r"c:\a\b\c\d\f") #等于递归调用mkdir
#os.removedirs(r"c:\a\b\c\d\f") #清理空文件夹
print(os.listdir("c:"))
print(os.system('ipconfig /all'))
4. sys模块
5. shutil模块,进行文件的copy
shutil.copyfile()
copymode()
make_archive()
6. json 和pickle
# json,用于字符串和py数据类型间的转换
# pickle,用于py特有的类型和py的数据类型之间的转换
7. shelve:是一个简单的看,v将内存数据通过文件持久化得模块,可以持久化pickle可支持的py的数据格式
8. xml <>
#需要 import xml.tree.ElementTree
#增删改查 http://www.cnblogs.com/alex3714/articles/5161349.html
9. Configparser() #生成修改配置文件
10. hashlib #SHA512优于MD5
11. hmac #消息加密
12. 正则表达式 #用来匹配字符串,动态模糊匹配
# match
# search
# findall
# split 分割
# sub 替换
https://www.cnblogs.com/yyyg/p/5498803.html
# 计算器 # 利用正则表达式找到最里层的() # 先计算乘除,再加减 import re ### 定义加法操作函数 ### 定义减法操作函数 def _minus_trx(number_list=[]): _minus_summary = 0 for j in range(len(number_list)): #print(number_list[j]) if j == 0: _minus_summary = int(number_list[j]) else: _minus_summary = _minus_summary - int(number_list[j]) # print("有减号的数组的结构是。。。%s" % _minus_summary) return _minus_summary _abc = "12+34-1+99+11-12" ret = re.findall(r'(\d+)',_abc) _nl = re.split('\+',_abc) #print("分解加号后的list。。。") #print(_nl) #print("\n") _add_summary = 0 for i in range(len(_nl)): _minus_flag = (re.search(r'\-',_nl[i]))### 找出 - 的字符串 if _minus_flag == None: ###字符串中没有减号,都是加号 _add_summary = _add_summary + int(_nl[i]) # print(str(_add_summary)+" 加了%s后 。。。"%_nl[i]) else: ###字符串中有减号 minus_res= 0 ret1 = re.findall(r'(\d+)', _nl[i]) minus_res = _minus_trx(number_list = ret1) _add_summary = _add_summary +int(minus_res) print(_abc+"=计算结果是。。。。》》》"+str(_add_summary))