1、import导入模块
#1.定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑),本质就是.py结尾的python文件,实现一个功能 包:python package 用来从逻辑上组织模块 本质就是一个目录(必须带有一个__init__.py的文件) #2.导入方法 import module import module1,module2 导入多个模块 from module import * 导入所有 不推荐慎用(可能会覆盖本文件中自定义的同名函数) from module import logger as logger_sunhao 创建别名 from module import m1,m2,m3 #3.import模块本质(路径搜索和搜索路径) import sys print(sys.path) sys.path路径就是当前执行文件所在的路径 import module ---> module.py ----> module.py的路径 ---> sys.path #4.导入优化 from module_test import test #5.模块的分类 1.标准库 time与datetime 2.开源模块 3.自定义模块
#1、bin执行文件的路径是'E:\\Python学习2019',如果想调用web3目录下的main.py模块,需要 from web1.web2.web3 import main 这样调用
#2、main.py和cal.py虽然都在web3目录下,但是如果main.py想调用cal.py必须这样写:from web1.web2.web3 import cal 因为执行文件的路径只有一个就是:'E:\\Python学习2019'
#3、bin和module目录是同级目录,如果想在bin.py中直接from module import main调用module目录中的文件,需要把路径加到环境变量中。 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR)
二、动态导入模块 importlib.import_module
三、time和datetime时间模块
1、time
在Python中,通常有这几种方式来表示时间: 1、时间戳 2、格式化的时间字符串 3、元组(struct_time)共九个元素。 由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。 UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。 时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。 元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:
1 # -*-coding:utf-8-*- 2 import time 3 print(time.time()) #获取一个时间戳 从1970年开始按秒计时的一个浮点型数值 4 print(time.localtime()) #返回一个struct_time元组类型序列 里面元素包含年,月,日等九个元素 5 print(time.timezone) #返回一个值 单位为秒 6 print(time.asctime()) #返回当前时间字符串格式 7 time.sleep(2) #睡眠几秒 8 9 time.gmtime() #把时间戳转换成元组,但是时间是UTC时间 10 time.gmtime(time.time()-time.timezone) #把UTC时间转换成当地时间 11 print(time.localtime()) #把时间戳转换成元组,但是时间是当地时间 结果为UTC+8时区
x=time.localtime() print(x.tm_year) #获取年 print(x.tm_mon) #获取月 print(x.tm_mday) #获取日 print(x.tm_hour) #获取时 print(x.tm_min) #获取分 print(time.mktime(x)) #元组转换成时间戳 #元组转换成格式化字符串时间 time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) #把格式化字符串转换成元组 time.strptime('2017-10-17','%Y-%m-%d')
%a 本地(locale)简化星期名称 %A 本地完整星期名称 %b 本地简化月份名称 %B 本地完整月份名称 %c 本地相应的日期和时间表示 %d 一个月中的第几天(01 - 31) %H 一天中的第几个小时(24小时制,00 - 23) %I 第几个小时(12小时制,01 - 12) %j 一年中的第几天(001 - 366) %m 月份(01 - 12) %M 分钟数(00 - 59) %p 本地am或者pm的相应符 一 %S 秒(01 - 61) 二 %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 三 %w 一个星期中的第几天(0 - 6,0是星期天) 三 %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。 %x 本地相应日期 %X 本地相应时间 %y 去掉世纪的年份(00 - 99) %Y 完整的年份 %Z 时区的名字(如果不存在为空字符) %% ‘%’字符
2、datetime时间模块
import datetime # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925 #print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 2016-08-19 # print(datetime.datetime.now() ) # print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天 # print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天 # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时 # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分 # c_time = datetime.datetime.now() # print(c_time.replace(minute=3,hour=2)) #时间替换
四、 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'}