python 内置库 日期与时间处理
目录
- 获取当前日期/获取特定时间
- datetime 与 timestamp 时间戳互转
- datetime 与 str 互转
- 实战练习
工作中的应用
- 作为日志信息的内容输出
- 计算某个功能的执行时间
- 用日期命名一个日志文件的名称
- 生成随机数(时间是不会重复的)
python 中处理时间的模块
- time:偏底层
- datetime:date(年月日) + time(时分秒)
- calender:像日历
常见的时间表示形式
datetime 常用的类
练习1 - 获取当前日期和时间
import datetime
nowtime = datetime.datetime.now()
print(nowtime)
# 结果是: 2023-08-27 11:42:25.732064
print(f'年份是{nowtime.year},月份是{nowtime.month},天数是{nowtime.day},时钟是{nowtime.hour},分钟是{nowtime.minute},秒数是{nowtime.second}')
# 结果是年份是2023,月份是8,天数是27,时钟是11,分钟是45,秒数是14
print(nowtime.timestamp())
# 秒级的时间戳:1693108014.785815
print(datetime.datetime(2022,8,27))
# 获取指定时间日期格式:2022-08-27 00:00:00
练习2 - 字符串与时间互转
import datetime
s = '2020-01-30 23:24:30'
# 字符串转时间格式
s1 = datetime.datetime.strptime(s,'%Y-%m-%d %H:%M:%S')
print(s1) # 结果是: 2020-01-30 23:24:30
# 时间转字符串
a = datetime.datetime.now()
a1 = a.strftime('%a, %y %b %d %H:%M:%S')
print(a1) # 结果是: Sun, 23 Aug 27 11:55:25
练习3 - 时间戳与时间互转
import datetime
a = datetime.datetime.now()
print(a) # 结果是:2023-08-27 11:59:57.773227
a1 = a.timestamp()
print(a1) # 结果是:1693108797.773227
b = float(a1) + 24*60*60
print(b) # 结果是:1693195197.773227
b1 = datetime.datetime.fromtimestamp(b)
print(b1) # 结果是:2023-08-28 11:59:57.773227
实例
- 写一段代码,生成一个以时间命名的日志文件,并向日志文件中写入日志数据
- 日志建议格式:datetime [level] line(行号):13 this is a log message
import datetime
import os
os.getcwd() # 获取当前目录
# print(os.getcwd())
os.chdir('..') # 切换目录到上一级
print(os.getcwd())
cc = os.getcwd() + '\\new_time'
print(f'cc={cc}')
# 如果文件夹不存在,则创建文件夹
if not os.path.exists(cc):
os.makedirs(cc)
# 获取当前时间
time = datetime.datetime.now()
# 时间转为标准格式并转为字符串
times = time.strftime('%Y%m%d%H%M%S')
# 设置文件路径和文件名
file_path = cc + '\\' + times + '.txt'
print(file_path)
# 使用open函数创建文件
f = open(file_path, 'w', encoding='utf-8')
# datetime [level] line(行号):13 this is a log message
f.write(f'{time}》》')
f.write('[Debug]》》')
f.write('line:1》》')
f.write('开始执行文件》》')
f.write('日志输出: This is a log message》》')
f.write('执行完毕!')
f.close()
#
# 重命名
# for file in os.listdir(cc):
# filepath = os.path.join(cc,file)
# print(filepath)
# if os.path.isdir(filepath):
# re_name(filepath)
# else:
# if 'aaa' in file:
# file_new = file.replace('aaa',times+'')
# file_new_path = os.path.join(cc,file_new)
# os.rename(filepath,file_new)
# print(file_new)
os.getcwd()
print(os.getcwd())
os.chdir(cc)
os.listdir(cc)
print(f'os.listdir(cc)={os.listdir(cc)}')
print(f'file_path={file_path}')
with open(os.listdir(cc)[0], 'r', encoding='utf-8') as f:
print(f.read())
os.remove(file_path)
os.chdir('..')
print(f'文件删除成功,cc={cc}')
os.rmdir(cc)
print('目录删除成功')