Python之模块(概念,优点,系统常用模块【time时间模块、datetime日期模块、calendar日历模块、os模块】)

  • 概念:封装思想,为了解决代码难维护的问题,可以将很多相似的功能的函数进行分组,分别放到不同的包下,这样每个包下的内容较少,寻找不同的功能相对较快,提高工作效率

注意:一个.py文件就是一个模块

一个标准的模中包含的内容:变量,函数,类

  • 优点
  1. 提高代码的可维护性
  2. 提高代码的复用性【当一个模块完成之后,可以在不同的位置使用】
  3. 引用其他第三方的模块
  4. 避免变量,函数和类的命名冲突

系统常用的模块 

  • time时间模块:time()、gmtime()、localtime()、mktime()、asctime()、ctime()、strptime()、strftime()、休眠

采用的标准:格林威治时间,世界标准时间

时间的表示形式:

a.时间戳

   以整型或者浮点型表示的一个以秒为单位的时间间隔,这个事件的基础值是1970.1.1 00:00:00

b.元组格式

   9个整型数据

c.格式化的时间字符串

   %Y:年     %m:月     %d:日      %H:24小时      %h:12小时制     %M:分       %S:秒

 

时间模块的练习一:

import time

#1.time():返回当前时间戳,浮点型
c = time.time()
print(c)      #1557200388.3558068

#2.gmtime(参数):将时间戳转换为标准时间,结构体,关于元组的表示
g = time.gmtime(c)
print(g)     #time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=3, tm_min=39, tm_sec=48, tm_wday=1, tm_yday=127, tm_isdst=0)

#3.localtime(参数):将时间戳转换为本地时间,结构体,关于元组的表示,本地时间和标准时间相差8小时
l = time.localtime(c)
print(l)     #time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=11, tm_min=42, tm_sec=27, tm_wday=1, tm_yday=127, tm_isdst=0)

#4.mktime():将元组9位形式转换为时间戳
m = time.mktime(l)
print(m)      #1557200682.0
print(time.mktime((2019,5,7,11,46,53,0,21,0)))          #1557200813.0

#5.asctime():将时间元组表示形式转换为字符串【根据时间元组,生成一个人类可读时间】
a = time.asctime(l)
print(a)             #Tue May  7 16:24:44 2019

#6.ctime():将浮点型时间戳转换为字符串【根据时间戳,生成一个人类可读时间】
c1 = time.ctime(c)
print(c1)             #Tue May  7 16:26:31 2019

#7.strptime():将指定格式的字符串转换为指定的元组
time1 = "2019-5-7 16:28:20"
#需要被解析的时间字符串   格式化字符串
s1 = time.strptime(time1,"%Y-%m-%d %H:%M:%S")
print(s1)        #time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=16, tm_min=28, tm_sec=20, tm_wday=1, tm_yday=127, tm_isdst=-1)

#8.strftime():将时间元组转化为格式化字符串
#参数:格式化字符串  时间元组
s2 = time.strftime("%Y.%m.%d",l)
print(s2)         #2019.05.07

#9.休眠:将当前程序阻塞,时间为自行设定的秒数时间,多线程中使用较多
#参数:秒数
time.sleep(2)

时间模块练习二:已知字符串“2019-05-07”,输出“2019-05-10”

time1 = "2019-05-07"
print(time1)
#将对应时间字符串转换为时间戳
time2 = time.strptime(time1,"%Y-%m-%d")     #将时间字符串解析为时间元组
time3 = time.mktime(time2)           #将时间元组解析为时间戳
#计算3天之后的时间戳
time31 = time3 + 3 * 24 *3600
#将时间戳转换为字符串
time4 = time.localtime(time31)      #将时间戳转换为时间元组
time5 = time.strftime("%Y-%m-%d",time4)   #将时间元组解析为时间字符串
print(time5)
  • datetime日期模块:now()、datetime()、strftime()、strptime()、时间相减

基于time模块的再次封装

import datetime

#1.now():获取当前时间
d1 = datetime.datetime.now()   #包名.模块名.函数名
print(d1)             #2019-05-07 17:07:27.732679

#2.datetime():获取指定时间
d2 = datetime.datetime(2019,5,7,16,58,2,146)
print(d2)             #2019-05-07 16:58:02.000146

#3.strftime():格式化时间字符串
d3 = d1.strftime("%Y.%m.%d")
print(d3)             #2019.05.07

#4.strptime():与strftime()相对应
d4 = datetime.datetime.strptime(d3,"%Y.%m.%d")
print(d4)             #2019-05-07 00:00:00

#5.时间相减,得到的是时间间隔
datetime1 = datetime.datetime(2019,5,7,14,58,2,146)
datetime2 = datetime.datetime(2019,5,9,16,58,2,146)
newtime = datetime2 - datetime1
print(newtime)            #2 days, 0:00:00
print(newtime.days)       #2
print(newtime.seconds)    #7200
  • calendar日历模块:month()、monthcalendar()、calendar()、isleap()、leapdays()、weekday

作用:处理万年历

import calendar

#返回指定年的某月
print(calendar.month(2019,5))

#返回一个二维列表,任然是一个万年历
print(calendar.monthcalendar(2019,5))
'''
[[0, 0, 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, 31, 0, 0]]
'''

#返回指定年的日历
print(calendar.calendar(2019))       

#判断某一年是否是闰年
print(calendar.isleap(2012))            #True

#返回两个年份之间闰年的总数
print(calendar.leapdays(2000,2020))     #5

#返回周的日期,0【星期一】~6【星期日】,月份1~12
print(calendar.weekday(2019,5,7))       #1
  • os模块系统模块:os、os.path

包含普通的操作文件或者文件夹的功能

import os
#属性,获取操作系统的名称  nt代表window操作系统,posix代表Linux,Unix或者mac os操作系统
print(os.name)    #nt
#获取环境变量
print(os.environ)
print(os.environ.get("APPDATA"))
#获取当前目录
print(os.curdir)     #.

#函数
#1.获取指定目录下所有的文件以及文件夹,返回的结果为一个列表,列表中的元素是文件或者文件夹的名称的字符串
print(os.listdir(r"E:\Python学习\1py基础\Day9"))    #['代码', '作业', '笔记', '视频']

#2.在指定的目录下创建目录
os.mkdir("abc111")      #相对路径
os.mkdir(r"E:\Python学习\1py基础\Day9\aaa")    #绝对路径

#3.删除目录
os.rmdir("abc111")

#4.获取文件的属性
print(os.stat(r"E:\Python学习\1py基础\Day9\aaa"))

#5.给文件或者文件夹重命名,注意:此时文件是关闭状态
#参数: old   new
os.rename("abc111","python")

#6.删除文件
os.remove("abc111.py")
#os.path
#1.路径的拼接
path1 = r"E:\Python学习\1py基础"
path2 = r"Day9\代码"
print(os.path.join(path1,path2))      #E:\Python学习\1py基础\Day9\代码

#2.路径的拆分,返回结果是元组,默认拆分一级目录
path3 = r"E:\Python学习\1py基础\Day9\代码"
print(os.path.split(path3))        #('E:\\Python学习\\1py基础\\Day9', '代码')

#获取扩展名,如果没有扩展名,则获取的是一个元组,元组中的第一个元素为空
path4 = r"E:\Python学习\1py基础\Day9\代码\Day9Code\decoratorDemo01.py"
print(os.path.splitext(path4))    #('E:\\Python学习\\1py基础\\Day9\\代码\\Day9Code\\decoratorDemo01', '.py')

#3.判断一个指定的路径是否是目录
print(os.path.isdir(path3))       #True

#判断一个指定路径是否是文件
print(os.path.isfile(path3))

#4.判断指定的路径是否存在
print(os.path.exist(path3))

#5.获取文件的大小【字节】
print(os.path.getsize(path3))

#6.关于文件的目录,将父路径和子路径合在一起,就是整个目录
print(os.path.dirname(path3))   #拿到父路径
print(os.path.basename(path3))  #拿到子路径

练习:获取指定目录下所有的.py或者.txt文件

#a.先判断给定目录是否存在
#b.获取指定目录下所有的文件和文件夹
#c.拼接路径,并判断拼接后的文件是否是文件
#d.筛选出.py和.txt文件
def getFile(path):
    #a
    if os.path.exists(path):
        #b.
        fileList = os.listdir(path)
        #遍历列表
        for fileName in fileList:
            filePath = os.path.join(path,fileName)
            #d
            if os.path.isfile(filePath):
                if fileName.endswith(".py") or fileName.endswith(".txt"):   #endswith获取后缀名
                    print(fileName)
            else:
                print(fileName,"不是文件")
    else:
        print("该路径不存在")

getFile(r"E:\Python学习\1py基础\Day9\作业")

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值