5.Python基础学习笔记day5-栈队列、模块包、与时间模块
一、栈与队列
'''
栈:先进后出
'''
mystack = []
mystack.append(1)
print(mystack.pop())
def getalldir(path, str1=""):
listdir = os.listdir(path)
str1 += "\t"
for filename in listdir:
fileabspath = os.path.join(path, filename)
if os.path.isdir(fileabspath):
print(str1+"目录:"+filename)
getalldir(fileabspath, str1)
else:
print(str1+"文件:"+filename)
def getstackdir(path):
mystack = []
mystack.append(path)
while mystack:
print(mystack)
filepath = mystack.pop()
fileList = os.listdir(filepath)
for filename in fileList:
abspath = os.path.join(filepath,filename)
if os.path.isdir(abspath):
print("目录",filename)
mystack.append(abspath)
else:
print("文件",filename)
'''
队列:先进先出
'''
import collections
queue = collections.deque()
queue.append(1)
print(queue.popleft())
import os
import collections
def getqueuedir(path):
queue = collections.deque()
print(queue)
queue.append(path)
while queue:
filepath = queue.popleft()
filenameList = os.listdir(filepath)
for filename in filenameList:
abspath = os.path.join(filepath,filename)
if os.path.isdir(abspath):
print("目录",filename)
queue.append(abspath)
else:
print("文件",filename)
二、模块、包
'''
模块
定义:在python中一个.py文件就是一个模块。
模块划分:
内置模块:无须自己定义,无须安装,可以直接导入使用的模块,我们称之为内置模块
自定义模块:需要自己定义py文件
第三方模块:无须自己定义,但是需要安装的模块,我们称之为第三方模块。
模块优点:
1.提高代码的可维护性
2.提高代码的复用性
3.可以引入其他模块
4.可以避免函数名以及变量名的冲突
'''
'''
1、模块的导入[整体引入]
import 模块名
一次性导入多个模块:
import 模块1,模块2,模块3,...
引用模块中的函数以及变量
模块名.函数名(参数列表)
模块名.变量名
若模块名比较长的情况下,为了方便调用,我们可以给模块取一个别名
语法:
import 模块名 as 别名
函数的调用以及变量的使用:
别名.函数名(参数列表)
别名.变量
2、模块的导入【局部引入】
from 模块名 import 函数名,类名,变量名
使用此方式引入:
引用函数以及变量的时候语法:
函数名(参数列表)
变量名
注意:
使用这种方式导入,优点方便函数的调用,缺点可能会引起函数名的冲突
【因此使用此方式导入在给函数以及变量命名的时候要注意不要出现重名】
3、模块导入之*
from 模块名 import *
*:代表导入模块中所有函数以及变量
函数的引用
函数名(参数列表)
变量名
注意:一般情况下,不建议使用【特别容易造成函数名变量名的冲突】
'''
'''
包:为了解决模块名的冲突,python引入目录来组织模
块的方法,我们称之为包。
每个包目录下都会包含一个__init__.py文件,这个文件必须
存在,若不存在python会将其当成一个普通目录,而不是一个包
__init__.py文件可以是一个空文件也可以有内容。
自定义模块的时候,需要注意不能跟python自带的模块名冲突
自定义模块取名的时候,可以使用多个单词拼接的方式来取名
'''
三、时间模块
'''
UTC(世界协调时间):格林尼治天文时间,世界标准时间,在中国来说是UTC+8
DST(夏令时):是一种节约能源而人为规定时间制度,在夏季调快1个小时
时间的表示形式:
1、时间戳
以整型或浮点型表示时间的一个以秒为单位的时间间隔。这个时间间隔的基础值是从1970年1月1日领带开始算起
2、元组
一种Python的数据结构表示,这个元组有9个整型内容
year
month
day
hours
minutes
seconds
weekday
Julia day
flag (1 或 -1 或0)
3、格式化字符串
%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 时区的名字(如果不存在为空字符)
%% ‘%’字符
'''
'''
4、time模块
'''
c = time.time()
print(c)
t = time.gmtime(c)
print(t)
b = time.localtime(c)
print(b)
q = time.strftime("%Y-%m-%d %X")
print(q)
print(type(q))
w = time.strptime(q, "%Y-%m-%d %X")
print(w)
m = time.mktime(b)
print(m)
'''
5、datetime模块
'''
'''
datetime.now()
功能:获取当前系统时间,返回datetime类型
datetime(year,mon,day,hour,min,sec)
功能:将指定的时间转为datetime对象
dt.strftime("%Y-%m-%d %X")
功能:将datetime对象格式化为时间字符串
dtime = dt-dt2
功能:两个datetime对象相减返回一个时间间隔对象
dtime.days 两个时间相隔的天数
dtime.seconds 除天数之外剩余的秒数
'''
dt = datetime.now()
print(dt)
print(type(dt))
dtstr = str(dt)
print(dtstr)
print(type(dtstr))
dt2 = datetime(2019,6,16,10,10,10)
print(dt2)
strdt = dt.strftime("%Y-%m-%d %X")
print(strdt)
print("*"*50)
print(datetime.strptime("2019-06-20", "%Y-%m-%d"))
dtime = dt-dt2
print(dtime)
print(type(dtime))
print(dtime.days)
print(dtime.seconds)
'''
calendar模块
'''
'''
calendar.calendar(year)
功能:返回指定年份的日历(以字符串的形式)
calendar.month(year,mon)
功能:返回指定月份的日历(以字符串的形式)
calendar.isleap(year)
功能:判断指定年份是否为闰年,若是则返回True,否则返回False
calendar.leapdays(year1,year2)
功能:返回[year1,year2)中闰年的个数
calendar.monthrange(year,mon)
功能:返回该月第一天的星期码与该月的天数,以元组的形式返回。
calendar.monthcalendar(year,mon)
功能:返回某月以每一周为元素的序列,若这天没有则使用0来进行占位
calendar.weekday(year,mon,day)
功能:返回指定日期的星期码
'''
import calendar
year = calendar.calendar(2019)
print(year)
'''
2019
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31
'''
print(type(year))
mon = calendar.month(2019,6)
print(mon)
'''
June 2019
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
'''
print(calendar.isleap(2100))
print(calendar.leapdays(2000, 2019))
print(calendar.monthrange(2019,6))
print(calendar.monthrange(2019,7))
print(calendar.monthcalendar(2019,6))
print(calendar.weekday(2019, 6, 17))