
十三.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=ssimport 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())
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月27日 06时55分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
阿里钉钉面试题
2019-03-06
华为社招笔试
2019-03-06
C++中找资源或者函数的方法
2019-03-06
一些留给自己的思考题(只求回过头来能够有所获)
2019-03-06
SQL函数返回表的写法
2019-03-06
delete对象时会自动调用类的析构函数
2019-03-06
C++ 子类对象直接赋值给父类对象可行,反过来不行
2019-03-06
linux下同一个动态库名为何辣么多的.so文件
2019-03-06
SQL联表的方式(逗号, Left Join, Right Join)
2019-03-06
牛客网输入输出举例
2019-03-06
字符串初始化时的注意点
2019-03-06
软考相关试题
2019-03-06
顺序表的操作
2019-03-06
常量表达式
2019-03-06
POD类型
2019-03-06
const与常量,傻傻分不清楚~
2019-03-06
Head First设计模式——迭代器模式
2019-03-06
MongoDB版本及存储引擎区别
2019-03-06
shell echo单行和多行文字定向写入到文件中
2019-03-06
AtCoder Beginner Contest 100 题解
2019-03-06