Python开发【内置模块篇】

动态导入模块

动态导入模块
导入一个库名为字符串的
module_t = __import__('m1.t')
print (module_t) #m1

import importlib
m=importlib.import_module('m1.t')
print (m) #m1.t
import
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
View Code

随机数模块

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())
random

系统模块

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() #最后一次修改时间
os sys

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 加了全部显示(取消括号优先级)
re

 

日志模块 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")
logging

加密模块 hashlib

import hashlib  #位数是固定的
    #obj = hashlib.md5("sb".encode('utf8')) #私钥
    obj = hashlib.md5() #sha256一样 
    obj.update('hello'.encode('utf-8'))
    print(obj.hexdigest()) #5d41402abc4b2a76b9719d911017c592
hashlib

 

posted @ 2018-07-26 15:41  Tanglaoer  阅读(281)  评论(0)    收藏  举报