Python内置模块181101,内置模块,模块的定义使用1、模
Python内置模块181101,内置模块,模块的定义使用1、模
模块的定义使用
1、模块的定义
模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的Python文件(文件名:test.py,模块名:test)包:用来从逻辑上组织模块的,本质是一个目录(必须带有一个__init__.py的文件)。
2、导入方法
import mod1import mod1,mod2,mod3from mod1 import * #导入mod1中所有的变量,函数等(不建议使用)from mod1 import say_hello as say_hello2 #当与本地模块冲突是可以使用别名import mod1 和 from mod1 import *
# Author:Li Dongfeiimport mod1mod1.say_hello('dongfei')
# Author:Li Dongfeifrom mod1 import *say_hello('dongfei')加环境变量
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
3、import的本质
导入模块的本质就是把Python文件解释一遍
直接import相当于将mod1的代码赋值给mod1,需要用mod1.xxx调用from xxx import是直接将mod1中代码放到当前代码中执行,所有可以直接调用导入包的本质是在解释执行包下的__init__.py文件
4、导入优化
from mods import *
5、模块的分类
标准库开源模块自定义模块内置模块
1、time和datetime模块
# Author:Li Dongfeiimport time,datetimeprint(time.time()) #时间戳print(time.localtime().tm_year) #本地时间,元组形式,可接受时间戳print(time.gmtime()) #utc时间,元组形式,可接受时间戳print(time.mktime(time.localtime())) #元组形式转换为时间戳print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())) #自定义字符串格式print(time.strptime("2018-11-05 17:42:07","%Y-%m-%d %H:%M:%S")) #字符串转换为元组格式print(time.asctime()) #接受元组print(time.ctime()) #接受时间戳print(datetime.datetime.now()) #获取当前时间print(datetime.datetime.now()+datetime.timedelta(3)) #三天后的时间print(datetime.datetime.now()+datetime.timedelta(-3)) #三天前的时间print(datetime.datetime.now()+datetime.timedelta(hours=3)) #三小时后的时间print(datetime.datetime.now()+datetime.timedelta(minutes=3)) #三分钟后的时间
2、random模块
# Author:Li Dongfeiimport randomprint(random.random()) #随机浮点数,0 - 1print(random.randint(1,7)) #随机整数,1 - 7(包括7)print(random.randrange(1,9)) #随机整数,1 - 9(不包括9)print(random.choice('dongfei')) #随机从字符串,元组,列表等中取一个元素print(random.sample('hello',2)) #从字符串中随机取2位print(random.uniform(1,3)) #取浮点数1 - 3list1 = [1,2,3,4,5,6,7,8]random.shuffle(list1)print(list1)# 验证码生成代码checkcode=''for i in range(4): current = random.randrange(0,4) if current == i: tmp = chr(random.randint(65,90)) else: tmp = random.randint(0,9) checkcode += str(tmp)print(checkcode)
3、os模块
# Author:Li Dongfeiimport osprint(os.getcwd()) #当前文件所在目录os.chdir("C:\\Users") #切换目录os.chdir(r"C:\Users")print(os.curdir) #返回当前目录print(os.pardir) #返回父目录#os.makedirs(r"C:\a\b\c\d") #递归创建目录#os.removedirs(r"C:\a\b\c\d") #递归删除目录(清理空文件夹)#os.mkdir(r"C:\e") #创建一个目录#os.rmdir(r"C:\e") #删除一个目录print(os.listdir(".")) #列出当前目录的文件及文件夹#os.remove("xxx") #删除一个文件#os.rename("oldname","newname") #重命名print(os.stat(r'D:\PycharmProjects\p1810\hello.py')) #查看文件的信息print(os.sep) #获取操作系统的路径分隔符print(os.linesep) #获取换行分隔符print(os.pathsep) #获取环境变量分隔符print(os.environ) #获取环境变量print(os.name) #显示系统名os.system("dir") #执行命令#os.path.abspath() #获取文件的绝对路径print(os.path.split(r"C:\a\b\c.txt"))print(os.path.dirname(r"C:\a\b\c.txt")) #获取目录名print(os.path.basename(r"C:\a\b\c.txt")) #获取文件名print(os.path.exists(r"C:\a\b\c.txt")) #判读路径是否存在print(os.path.isabs(r"C:\a\b\c.txt")) #判读是否为绝对路径print(os.path.isfile(r"C:\a\b\c.txt")) #判读是否为一个文件print(os.path.getatime(r'D:\PycharmProjects\p1810\hello.py'))print(os.path.getmtime(r'D:\PycharmProjects\p1810\hello.py'))print(os.path.getctime(r'D:\PycharmProjects\p1810\hello.py'))
4、sys模块
sys.argv 命令行参数List,第一个元素是程序本身路径sys.exit(n) 退出程序,正常退出时exit(0)sys.version 获取Python解释程序的版本信息sys.maxint 最大的Int值sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值sys.platform 返回操作系统平台名称sys.stdout.write('please:')val = sys.stdin.readline()[:-1]
5、shutil模块
# Author:Li Dongfeiimport shutilf1 = open("1.txt",encoding="utf-8")f2 = open("2.txt","w")shutil.copyfileobj(f1,f2) #copy文件shutil.copyfile("2.txt","3.txt")shutil.copymode("3.txt","4.txt") #仅copy权限shutil.copystat("4.txt","5.txt") #copy状态信息shutil.copy("4.txt","5.txt") #copy文件和权限shutil.copy2("4.txt","5.txt") #copy文件和状态信息shutil.copytree("D:\PycharmProjects","D:\PycharmProjects2") #递归cpshutil.rmtree("D:\PycharmProjects2") #递归删除shutil.move("5.txt","6.txt") #移动文件shutil.make_archive("PycharmProjects","zip","D:\PycharmProjects") #压缩归档
6、shelve模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
# Author:Li Dongfeiimport shelve,datetimed = shelve.open('shelve_test') #打开一个文件info = {'age':22,"job":'it'}name = ["redis","mysql","sqlserver"]d["name"] = named["info"] = infod['date'] = datetime.datetime.now()d.close()import shelved = shelve.open('shelve_test')print(d.get("name"))print(d.get("info"))print(d.get("date"))
7、configparser模块
写配置文件# Author:Li Dongfeiimport configparserconfig = configparser.ConfigParser()config["DEFAULT"] = {'ServerAliveInterval': '45', 'Compression': 'yes', 'CompressionLevel': '9'}config['bitbucket.org'] = {}config['bitbucket.org']['User'] = 'hg'config['topsecret.server.com'] = {}topsecret = config['topsecret.server.com']topsecret['Host Port'] = '50022' # mutates the parsertopsecret['ForwardX11'] = 'no' # same hereconfig['DEFAULT']['ForwardX11'] = 'yes'with open('example.ini', 'w') as configfile: config.write(configfile)查配置文件
# Author:Li Dongfeiimport configparserconf = configparser.ConfigParser()conf.read("example.ini")print(conf.defaults())print(conf.sections())print(conf['bitbucket.org']['user']) #查sec = conf.remove_section('bitbucket.org') #删conf.write(open('example2.ini',"w"))
8、hashlib
# Author:Li Dongfeiimport hashlibm = hashlib.md5()m.update(b"Hello")print(m.hexdigest())m.update(b"World")print(m.hexdigest())m2 = hashlib.md5()m2.update(b"HelloWorld")print(m2.hexdigest())
9、re模块
'.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行'^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)'$' 匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以'*' 匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac") 结果为['abb', 'ab', 'a']'+' 匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']'?' 匹配前一个字符1次或0次'{m}' 匹配前一个字符m次'{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']'|' 匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC''(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c'\A' 只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的'\Z' 匹配字符结尾,同$'\d' 匹配数字0-9'\D' 匹配非数字'\w' 匹配[A-Za-z0-9]'\W' 匹配非[A-Za-z0-9]'s' 匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t''(?P<name>...)' 分组匹配 re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict("city") 结果{'province': '3714', 'city': '81', 'birthday': '1993'}
示例:
# Author:Li Dongfeiimport reres1 = re.match("^dong","dong123fei")res2 = re.match("^dong\d","dong123fei") #\d代表一个数字res3 = re.match("^dong\d+","dong123fei") #+代表一个或多个print(res1.group(),res2.group(),res3.group())
Python内置模块181101
相关内容
- 使用Apriori算法进行关联分析(python2),python排序算法
- #5 Python变量与输入输出,,前言学习一门编程语言
- python操作格林威治时间,什么是格林威治时间,将当前时
- Python中的各种转义符,以下字符中不是转义符的,转义字
- python2项目出现的错误(UnicodeDecodeError),python错误,刚启动
- GraphViz和python交互,python交互,graphviz强大
- Python自动发邮件-yagmail库,怎么发邮件到gmail,之前写过
- Python对接六大主流数据库,只需三步,,作为近两年来最
- 9-->>python3,,判断一个整数是否是回
- Python自动化开发学习-爬虫2,,Web服务的本质2之
评论关闭