Python之第二十五天的努力--time、datetime、os模块
01 内容回顾
- 自定义模块
- 模块的两种执行方式
__name____file____all__- 模块导入的多种方式
- 相对导入
- random:
- random.random():
- random.uniform(a,b):
- random.randint(a,b):
- random.shuffle(x):
- random.sample(x,k):
02 time模块:和时间相关
封装了获取时间戳和字符串形式的时间的一些方法。
-
time模块的三大对象
-
获取时间戳
# 获取时间戳 # 时间戳:从时间元年(1970 1 1 00:00:00)到现在经过的秒数。 print(time.time()) # 1593496948.0449526。 -
获取格式化事件对象:由九个字段组成的。
# 获取格式化事件对象:由九个字段组成的。 # 默认参数是当前系统时间的时间戳。 print(time.gmtime()) # GMT:格林尼治时间 # time.struct_time(tm_year=2020, tm_mon=6, tm_mday=30, tm_hour=6, tm_min=13, tm_sec=22, tm_wday=1, tm_yday=182, tm_isdst=0) print(time.localtime()) # 当地时间 # time.struct_time(tm_year=2020, tm_mon=6, tm_mday=30, tm_hour=14, tm_min=17, tm_sec=0, tm_wday=1, tm_yday=182, tm_isdst=0) print(time.gmtime(1)) # 时间元年过一秒后,对应的时间对象 # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0) -
时间对象 --> 时间戳
# 时间对象 --> 时间戳 print(time.mktime(time.localtime())) -
格式化事件对象和字符串之间的转换
# 格式化事件对象和字符串之间的转换 s = time.strftime("%Y %m %d %H:%M:%S",) print(s) # 2020 06 30 14:25:23 -
把时间字符串转换成时间对象
# 把时间字符串转换成时间对象 s = time.strptime("2010 10 10","%Y %m %d") print(s)
-
-
睡眠
# 暂停当前程序,睡眠xxx秒 # time.sleep(xxx) for i in range(5): print(time.strftime('%Y-%m-%d %H:%M:%S')) # 休眠2秒 time.sleep(2) # 2020-06-30 15:00:49 # 2020-06-30 15:00:51 # 2020-06-30 15:00:53 # 2020-06-30 15:00:55 # 2020-06-30 15:00:57
03 datetime模块
-
data类
# date类: d = datetime.date(2010,10,10) print(d) # 2010-10-10 # 获取date对象的各个属性 print(d.year) print(d.month) print(d.day) -
time类
# time类: t = datetime.time(15,8,50) print(t) # 获取time对象的各个属性 print(t.hour) print(t.minute) print(t.second) -
datetime
# datetime dt = datetime.datetime(2020,6,30,15,30,50) print(dt) # 2020-06-30 15:30:50 -
datetime用于数学计算
# datetime中的类,主要用于数学计算。 # timedelta:时间的变化量 td1 = datetime.timedelta(days=1) print(td1) # 1 day, 0:00:00 # 参与数学运算 # 创建时间对象: # 只能和date,datetime,timedelta进行计算 d1 = datetime.date(2010,10,10) res1 = d1 + td1 print(res1) # 2010-10-11 # 时间变化量的计算是否会产生进位? t2 = datetime.datetime(2010,10,10,10,10,59) td2 = datetime.timedelta(seconds=3) res2 = t2 + td2 print(res2) # 2010-10-10 10:11:02 -
练习
# 练习:计算某一年的二月份有多少天。 # 普通算法:根据年份计算是否是闰年,是:29,否:28 # 用datetime模块。 # 首先创建出指定的年份的3月1号,然后让他往前走一天。 year = int(input('输入年份:')) # 创建指定年份的date对象 d = datetime.date(year,3,1) # 创建一天 的时间段 td = datetime.timedelta(days=1) res = d -td print(res.day)
04 os模块
-
和文件操作相关,重命名,删除
import os # 和文件操作相关,重命名,删除 # os.remove('a.txt') # os.rename('a.txt','b.txt') # 删目录,必须是空目录才能删 # os.removedirs('aa') # 使用shutil模块,可以删除带内容的目录 # import shutil # shutil.rmtree('aa') -
和路径相关的操作,被封装到另一个子模块中:os.path
-
os.path.dirname()
# 当前路径的父路径 res = os.path.dirname(r'd:/aaa/bbb/ccc/a.txt') # 不判断路径是否存在 print(res) # d:/aaa/bbb/ccc -
os.path.basename()
# # 获取文件名 res = os.path.basename(r'd:/aaa/bbb/ccc/a.txt') print(res) # a.txt -
os.path.split()
# 把路径中的路径名和文件名切分开,结果是元祖。 res = os.path.split(r'd:/aaa/bbb/ccc/a.txt') print(res) # ('d:/aaa/bbb/ccc', 'a.txt') -
os.path.join()
# 路径拼接 # path = os.path.join('d:\\','aaa','bbb','ccc','a.txt') # print(path) # d:\aaa\bbb\ccc\a.txt -
os.path.abspath()
# 如果是/开头的路径,默认是在当前盘符下。 res1 = os.path.abspath(r'/a/b/c') print(res1) # E:\a\b\c # 如果不是以/开头,默认当前路径 res2 = os.path.abspath(r'a/b/c') print(res2) # E:\pycharm\Python世界\从0开始学Python\day15\a\b\c -
os.path.isabs()
# 判断是不是绝对路径 print(os.path.isabs('d:/a.txt')) # True print(os.path.isabs('a.txt')) # False -
os.path.isdir()
# 判断是不是目录,去找,不存在为False print(os.path.isdir()) -
os.path.exists()
# 判断是否存在 print(os.path.exists()) -
os.path.isfile()
# 判断是不是文件,没有False print(os.path.isfile())
-

浙公网安备 33010602011771号