十三.Python模块
发布日期:2021-05-07 00:20:21 浏览次数:53 分类:精选文章

本文共 12364 字,大约阅读时间需要 41 分钟。

Python模块

 Time python内置时间模块  & Random  随机数模块

#20 模块#分类:#   内置函数模块#   第三方函数模块#   应用自定义函数模块#模块的使用#导入模块import  time  #导入time模块from time import localtime  #从time模块中导入localtime()函数print(localtime())#获取当前文件夹下的自定义模块(.py文件)import caleprint(cale.add(4,6))from cale import addprint(add(6,30))#获取子文件夹下的自定义模块(.py文件)from abc11 import cale  as v     #导入abc11文件夹下的cale模块作为vprint(v.add(60,60))               #调用cale模块下的add函数import abc11.cale as g           #导入abc11文件夹下的cale模块作为vprint(g.add(1,7))from  abc11 import test  as t    #获取abc python包下__init__模块下的test函数t()                               #执行test函数#time模块及函数    Python内置函数import time#时间的种类#时间戳          用于时间运算#结构化时间      #字典时间#字符串时间      用于显示的时间#time       #时间戳print("当前时间戳 %s"%(time.time()))#localtime  #结构化时间print(time.localtime())#gmtime     #格林尼治结构化时间print(time.gmtime())#mktime     #将结构化时间转换为时间戳print(time.mktime(time.localtime()))#asctime    #将结构化时间转换为字符串时间print(time.asctime(time.localtime()))#ctime      #将时间戳转换为字符串时间print(time.ctime(time.time()))#strftime   将结构化时间转换为字符串时间# %Y 年# %m 月# %d 日# %X 时分秒print(time.strftime("%Y-%m-%d %X",time.localtime()))#strptime   将字符串时间转换为结构化时间print(time.strptime("2106-10-15 12:10:39","%Y-%m-%d %X"))#sleep 使程序暂停多少秒time.sleep(3)   #程序暂停2秒#clock  返回程序运行的耗时print(time.clock())# random 随机模块import random#random()  0-1之间的随机浮点数print(random.random())#randomint()  #随机两个参数之间的随机整数print(random.randint(10,20))#randrange()  #随机两个参数之间的随机整数print(random.randrange(10.0,20.0))#choice()     在列表参数里随机选择一个print(random.choice([11,15]))#shuffle()  将列表里的参数打乱顺序li=[1,2,3,4,5,6,7,8,9]random.shuffle(li)print(li)#uniform()  获取参数之间的随机浮点数res=random.uniform(15,60)print(res)

 

OS  操作系统模块

#OS模块import osimport timeif __name__=="__main__":    #获取当前目录    print(os.getcwd())    #listdir() 遍历目录下的文件    print(os.listdir(os.getcwd()))    #abspath  绝对路径    print(os.path.abspath(os.getcwd()))    #文件夹与文件合并    path=os.path.join(os.getcwd(),"os模块.py")    print(path)    #文件夹与文件分离    print(os.path.split(path))    #返回路径的文件夹部分    print(os.path.dirname(path))    #返回路径的文件名    print(os.path.basename(path))    #查看文件时间    #getctime 文件创建时间    print(os.path.getctime(path))    #getatime  文件最后访问时间    print(os.path.getatime(path))    #getmtime  文件修改时间    print(os.path.getmtime(path))    #查看文件大小    # getisze 获取文件大小    print(os.path.getsize(path))    #exists() 查看文件是否存在    print(os.path.exists(path))    # print(os.chdir("22.os,sys,json,re模块1"))    #path获取当前执行文件的路径    # print(os.path)    #stat 获取文件的详细信息    # print(os.stat("json模块.py"))    #mknod(filname,mode,device)    #filename -- 创建的文件系统节点    #mode -- mode指定创建或使用节点的权限, 组合 (或者bitwise) stat.S_IFREG, stat.S_IFCHR, stat.S_IFBLK, 和stat.S_IFIFO (这些常数在stat模块). 对于 stat.S_IFCHR和stat.S_IFBLK, 设备定义了 最新创建的设备特殊文件 (可能使用 os.makedev()),其它都将忽略。    #device -- 可选,指定创建文件的设备        # import stat        # os.mknod("b.txt",0600|stat.S_IRUSR)    #得到系统环境变量列表    # print(os.get_exec_path())    #execl 运行文件    # print(os.execl("C:/Users/admin/AppData/Local/Google/Chrome/Application/chrome.exe","chrome"))    #递归创建文件夹    #os.makedirs("a/b/c")    # removedirs  递归删除文件夹    # os.removedirs("a/b/c")    #创建文件夹    # os.mkdir("a")    #删除文件夹    # os.rmdir("a")    #system("")执行shell语句    # print(os.system("dir"))    #exit() 退出程序    print(os._exit(0))    #rename    # os.rename("b.txt","a.txt")    #remove()  删除文件    # print(os.remove("a.txt"))    #   set \    #   linesep \r\n 换行    #   extsep   .    #   pathsep  ;    print(os.sep)    print(os.linesep)    print(os.extsep)    print(os.pathsep)

 

SYS  操作python解释器的模块

#SYS模块import sysimport osimport time#sys.path.append()   添加环境到python解释器sys.path.append(os.getcwd())print(sys.path)#sys.stdout.write() 往控制台输入字符,相当于print()#动态往控制台输入字符for i in range(100):    sys.stdout.write(">")    time.sleep(0.1)    sys.stdout.flush()sys.stdout.close()if __name__=="__main__":    #sys.argv  接收运行文件时接收的参数  python  sys模块.py  1 2 3 4 5    args=sys.argv    for i in args:        print(i)    #sys.version   python解释器的版本    print(sys.version)#exit(0)  程序退出# sys.exit(0)

 

JSON 用于操作json数据的模块

#JSON模块import jsonli={'name':'tom'}#json是各编程语言之间沟通的媒介,json不支持存储函数数据if __name__=="__main__":    #dumps  将python数据转换为标准的json字符串数据    with open("json","w",encoding="utf-8") as f:        f.write(json.dumps(li))    #loads  将字符串json数据转换为python数据    with open("json","r",encoding="utf-8") as f1:        ret=f1.read()        print(ret)        res=json.loads(ret)        print(res["name"])

 

Pickle 模块

#PICKLE模块import pickle#pickle 只用于python之间的数据交换,但pickle支持序列化,可以存储的类型更多li=[{"name":"alex","age":18}]if __name__=="__main__":    #dumps 将python数据序列化    with open("pickle","wb") as f:        res=pickle.dumps(li)        print(res)        f.write(res)    #loads  将二进制数据反序列化为python数据    with open("pickle","rb") as f1:        res=f1.read()        res=pickle.loads(res)        print(res[0]["age"])

 

Shelve  模块

#SHELVE模块import shelve#shelve  将序列化进行了封装,可以利用面向对象的思想操作shelveif  __name__=="__main__":    #基于某个文件为数据源,进行shelve操作    shel=shelve.open("shelve")    #.__setitem__  存储键值数据    shel.__setitem__("name","alex")    shel.__setitem__("age",18)    #.__getitem__ 获取键值数据    print(shel.__getitem__("name"))    #shel.__contains__(key) 判断shelve是否存在对应的键值    print(shel.__contains__("name"))    #shel.__iter__() 获取shelve里的键值队    print(list(shel.__iter__()))    #shel.update()更新shelve的数据    shel.update(age=25)    #shel.pop(key) 删除对应键的数据    print(shel.pop("name"))    #shel.clear()  清空shelve所有数据    #print(shel.clear())    #items() 获取shelve里的键值队    print(list(shel.items()))    #values()  获取shelve里所有的键    print(list(shel.keys()))    #values()  获取shelve里所有的值    print(list(shel.values()))

 

 XML  xml文件操作模块

#XML模块import xml.etree.ElementTree as ET#XML 操作xml资源的模块if __name__=="__main__":    #parse(source)  解析xml文件资源    data=ET.parse("data.xml")    #getroot() 获取xml的根节点    res=data.getroot()    #循环根节点下面的节点    for i in res:        #tag  获取标签名        print(i.tag)        #attrib  获取标签的属性        print(i.attrib)        # find查找节点下的rank的元素        print(i.find("rank").text)        #get 获取该标签的属性        print(i.get("name"))        for node in i:            #text  读取标签的文本值            print(node.tag,node.text)            if(node.text.startswith("太平洋")):                print("login in...")                #修改标签文本                node.text="北冰洋"    # write()将修改写入到文件    data.write("data.xml",encoding="utf-8")

 

Re 正则表达式模块

#RE模块import re# 正则表达式   对字符串进行操作的模块#  . ^ $ * + ?    # .可以匹配所有    # ^ 表示字符串的开头    # $ 表示字符串的尾部    # *  ->  0,+00    # + ->   1,+00    # ? ->   0,1if __name__=="__main__":    # ... 每个.代表一个字母    res=re.findall("...","abc")    print(res)    # ^ 匹配只以字符串开头    res=re.findall("^..","bca")    print(res)    #   $ 匹配只以字符串结尾    res=re.findall("..$","123erwrw")    print(res)    # * 匹配 0至无穷    res=re.findall(".*","asfdasd1312312")    print(res)    # + 匹配 0至无穷    res=re.findall(".+","a231sdasd1312312")    print(res)    # ? 匹配 0或1    res=re.findall(".?","a231sdasd1312312")    print(res)    #  \转义字符    #  \d  只匹配数字    \D 匹配除数字以外的元素    res=re.findall("\d+","aaaa13123asda231")    print(res)    # \w 只匹配字母数字下划线   \W匹配除数字下划线字母以外的元素    res=re.findall("\w+","adassd!_asdas_@24sda")    ret=re.findall("\W+","adassd!_asdas_@24sda")    print(res,ret)    # \s 只匹配空格    res=re.findall("\s","13 3231 4435 5645")    print(res)    # [] 里面的元素都是 或的形式存在    # [-]  -:指从哪到哪,是一个范围    #[a-z]   [a-zA-z1-9_] 相当于 \w    res=re.findall("[a-z]+","13asda123ad")    print(res)    #  \将特殊字符转换为普通的字符    res=re.findall("1\.","1.dsasfd3.23123")    print(res) #split() 分割字符串    ret=re.split("abc","abc1abc23sda")    print(ret)        #match() 匹配字符串里符合规范的字符串对象    #group()  显示对象对应的值    res=re.match("abc","abc123").group()    print(res)        #sub(pattern,replace,str,times) 替换字符串所对应的字符,times 匹配的次数    res=re.sub("[a]*","@","aaabaaccaxada",2)    print(res)        #compile() 编译成正则表达式    res=re._compile("[ad]+",0)    ret=res.findall("aafda adsadasad") #调用正则表达式执行对应的操作    print(ret)        #finditer() 将匹配的字符添加到迭代器,适用于大量数据的操作    res=re.finditer("[a]+","aaaaxcxadas")    print(next(res))    # | 或    res=re.findall("ac|bc","ac")    print("| 或",res)    #正则表达式的分组    #search 查询匹配规则的字符    #?P<> 定义分组    # group() 调用分组 适用于 match,search    res=re.search(r"(?P
\w+)\s+(?P
\d+)","tom 18") print(res.group("name")) print(res.group("age")) # ?:去除优先级 # ret=re.findall("abc(abc)abc","abcabcabc") res=re.findall("abc(?:abc)abc","abcabcabc") print(ret,res)

 

 Logging 日志模块

import logging# 日志模块  用于输出日志if __name__=="__main__":    #basicConfig方式    # logging.basicConfig函数各参数:    #    # filename:指定日志文件名;    #    # filemode:和file函数意义相同,指定日志文件的打开模式,'w'    # 或者    # 'a';    #    # format:指定输出的格式和内容,format可以输出很多有用的信息,    # % (levelno)    # s:打印日志级别的数值    # % (levelname)    # s:打印日志级别的名称    # % (pathname)    # s:打印当前执行程序的路径,其实就是sys.argv[0]    # % (filename)    # s:打印当前执行程序名    # % (funcName)    # s:打印日志的当前函数    # % (lineno)    # d:打印日志的当前行号    # % (asctime)    # s:打印日志的时间    # % (thread)    # d:打印线程ID    # % (threadName)    # s:打印线程名称    # % (process)    # d:打印进程ID    # % (message)    # s:打印日志信息    # datefmt:指定时间格式,同time.strftime();    #    # level:设置日志级别,默认为logging.WARNNING;    #    # stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略;    #   basicConfig配置日志对象的属性    logging.basicConfig(level=logging.INFO,format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",filename="one.log",filemode="w")    #   getLogger获取日志对象    log=logging.getLogger(__name__)    #   日志等级  debug  <  info  <  warning  <   error  < critical    #    log.debug("debug")    log.info("info")    log.warning("warning")    log.error("error")    log.critical("critical")    import configparser    #面向对象的方式实现文件与控制台日志    # handler名称:位置;作用    #    # StreamHandler:logging.StreamHandler;日志输出到流,可以是sys.stderr,sys.stdout或者文件    # FileHandler:logging.FileHandler;日志输出到文件    # BaseRotatingHandler:logging.handlers.BaseRotatingHandler;基本的日志回滚方式    # RotatingHandler:logging.handlers.RotatingHandler;日志回滚方式,支持日志文件最大数量和日志文件回滚    # TimeRotatingHandler:logging.handlers.TimeRotatingHandler;日志回滚方式,在一定时间区域内回滚日志文件    # SocketHandler:logging.handlers.SocketHandler;远程输出日志到TCP / IP    # sockets    # DatagramHandler:logging.handlers.DatagramHandler;远程输出日志到UDP    # sockets    # SMTPHandler:logging.handlers.SMTPHandler;远程输出日志到邮件地址    # SysLogHandler:logging.handlers.SysLogHandler;日志输出到syslog    # NTEventLogHandler:logging.handlers.NTEventLogHandler;远程输出日志到Windows    # NT / 2000 / XP的事件日志    # MemoryHandler:logging.handlers.MemoryHandler;日志输出到内存中的指定buffer    # HTTPHandler:logging.handlers.HTTPHandler;通过    # "GET"    # 或者    # "POST"    # 远程输出到HTTP服务器    #   getLogger获取日志对象    lo=logging.getLogger(__name__)    #   FileHandler获取基于文件的日志对象    file=logging.FileHandler("two.log","w")    #   setLevel设置文件日志对象的等级    file.setLevel(logging.WARNING)    #   logging.Formatter设置日志格式    formatter=logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")    #   setFormatter设置日志文件的格式    file.setFormatter(formatter)    #   logging.StreamHandler()创建基于控制台的日志对象    stream=logging.StreamHandler()    #   setLevel设置控制台日志的科技    stream.setLevel(logging.DEBUG)    #   setFormatter设置控制台日志的格式    stream.setFormatter(formatter)    #   addHandler将文件日志加入日志对象    lo.addHandler(file)    #   addHandler将控制台日志加入日志对象    lo.addHandler(stream)    #   error利用日志对象在文件和控制台同时打印日志    lo.error("debug")

 

 configparser 操作配置文件的模块

[tom]name=tomage=18add=space[alex]name=alexage=19add=ss
import configparser#   configparser 操作配置文件的模块if __name__=="__main__":    #   ConfigParser() 获取模块对象    config=configparser.ConfigParser()    #   read()  读取日志文件    config.read("config.ini")    #   add_section添加部分名称    config.add_section("marry")    #   set(section,key,value) 添加参数    config.set("marry","name","marry")    config.set("marry","age","18")    # 获取配置文件部分的键值    it=config.get("tom","name")    print(it)    #   keys()获取所有参数的键值    print("keys()获取所有参数的键值",list(config.keys()))    #  options()获取tom下的所有属性名    print("values()获取所有参数的值 ",list(config.options("tom")))    # 获取部分下的所有配置参数    print(config.items("tom"))    #   pop("tom") 删除键值为tom的部分    config.pop("tom")    #   sections() 获取部分的名称    sections=config.sections()    print(sections)    #    with open("config.ini","w") as f:        config.write(f)

 

hashlib  加密模块 

import hashlib# hahslib   用于加密的模块if __name__=="__main__":    #   md5()调用md5加密对象    md=hashlib.md5()    #   update利用加密对象加密    md.update("admin".encode(encoding="utf-8"))    #   hexdigest输出加密后的文本    print(md.hexdigest())

 

上一篇:十四.Python_面向对象编程
下一篇:十二.Python文件操作逻辑与解耦

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年03月27日 06时55分41秒