动态导入模块
动态导入模块 导入一个库名为字符串的 module_t = __import__('m1.t') print (module_t) #m1 import importlib m=importlib.import_module('m1.t') print (m) #m1.t
import 模块 1.执行对应文件 2.引入变量名 cal.py print('ok') def add(a,b): return a+b print('ok2') test.py from cal import add #会先打印print('ok') print('ok2') 不支持 from web.web1 import web2 print (web2.cal.add(2,6)) if __name__ = "__main__": 用法1: 用于被调用文件的测试 用法2: 不想这个文件成为被调用文件
时间模块 time & datetime
import time 掌握: 1.时间戳: time.time() #从1970 1 1 到现在经过的秒数 2.当地时间 time.localtime() #time.struct_time(tm_year=2018, tm_mon=5, tm_mday=30, tm_hour=20, tm_min=11, tm_sec=38, tm_wday=2, tm_yday=150, tm_isdst=0) t = time.localtime() print(t.tm_wday) #周几 3.结构化时间 time.gmtime() 4.将结构化时间转化为时间戳 time.mktime(time.localtime()) #1527683203.0 5.将结构化时间转成字符串时间 time.strftime("%Y-%m-%d %X",time.localtime()) #2018-05-30 20:22:30 6.将字符串时间转成结构化时间 time.strptime("2018-05-30 20:22:30","%Y-%m-%d %X") #time.struct_time(tm_year=2018, tm_mon=5, tm_mday=30, tm_hour=20, tm_min=22, tm_sec=30, tm_wday=2, tm_yday=150, tm_isdst=-1) 7.直接看一个时间 time.asctime() #Wed May 30 20:27:36 2018 结构化转成字符串 time.ctime() #Wed May 30 20:27:36 2018 时间戳转成字符串 import datetime datetime.datetime.now() #2018-05-30 20:34:39.589147
随机数模块
import random random.random() #[0,1) .......randint(1,3) #[1,3] .......randrange(1,3) #[1,3) .......choice([11,22,33]) #取一个 .......sample([11,22,33],2) #取二个 [22, 44] .......unifom(1,3) #取一个 打乱顺序 ret = [11,22,33,44,55] random.shuffle(ret) #[44, 11, 33, 22, 55] 一个应用 生成五位数随机数 def code(): ret = "" for i in range(5): num = random.randint(0,9) s = random.randint(65, 90) t = random.randint(97, 122) alf = chr(random.choice([s,t])) # ASCII码转换 s = str(random.choice([num,alf])) ret += s return ret print(code())
系统模块
import sys sys.path.append() #临时修改环境变量 sys.platform() #返回操作系统平台名称 sys.path() sys.exit(0) sys.argv() #获取命令行参数 sys.stdout.write('#') #一次打出来 time.sleep()都没有用 sys.stdout.flush() #刷 有多少显示多少 进度条 应用1: 进度条案例 import sys import time for i in range(100): sys.stdout.write('#') time.sleep(0.1) sys.stdout.flush() import os os.path.dirname() os.cwd() #当前目录 os.chdir("test1") #转到子目录下的test1下 os.system('dir') #终端执行此命令 os.path.split() #分割成目录 和 文件名 os.path.join() #路径拼接 os.stat('test.py') #获取文件信息 os.path.getmtime() #最后一次修改时间
re模块
import re re.search(r'd','str46') #返回是一个对象 re.search(r'd','str46').group() #取出值 #分组 re.search(r'(?P<name>[a-z]+)(?P<age>d+)','tang36er34xiaoyang33').group('name','age') #('alex', '36') re.match('d+','').group() #从开始处匹配 re.split("[ |]","hello abc|def") #空格 管道符匹配 re.split("[ab]","asdabcd") # ['', 'sd', '', 'cd'] re.sub('d+','A',"jaskd4235ashdjf5423") #把匹配项改为A jaskdAashdjfA com = re.compile("d") #写好规则 com.findall("str") re.finditer() re.findall("www.(?:baidu|163).com","www.baidu.com") #不加?:只会显示 baidu 加了全部显示(取消括号优先级)
日志模块 logging
import logging logging.basicConfig( level=logging.DEBUG,#修改级别为DEBUG filename="logger.log", #存到文件中 默认是 追加模式 filemode="w", #修改为 写模式 format="%(asctime)s %(filename)s [%(lineno)d]) %(message)s" ) logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message') --------logger---- #子会打印父的内容 logger = logging.getLogger('mylogger') #无参默认是root用户 fh = logging.FileHandler("test_log") ch = logging.StreamHandler() fm = logging.Formatter("%(asctime)s %(message)s") fh.setFormatter(fm) ch.setFormatter(fm) logger.addHandler(fh) logger.addHandler(ch) #设置级别 logger.setLevel("DEBUG") #函数的话: return logger logger.debug("hello") logger.info("hello")
加密模块 hashlib
import hashlib #位数是固定的 #obj = hashlib.md5("sb".encode('utf8')) #私钥 obj = hashlib.md5() #sha256一样 obj.update('hello'.encode('utf-8')) print(obj.hexdigest()) #5d41402abc4b2a76b9719d911017c592