Python 测开27期 - WL - 学习笔记 - python 内置库 日期与时间处理

python 内置库 日期与时间处理

目录

  • 获取当前日期/获取特定时间
  • datetime 与 timestamp 时间戳互转
  • datetime 与 str 互转
  • 实战练习

工作中的应用

  • 作为日志信息的内容输出
  • 计算某个功能的执行时间
  • 用日期命名一个日志文件的名称
  • 生成随机数(时间是不会重复的)

python 中处理时间的模块

  • time:偏底层
  • datetime:date(年月日) + time(时分秒)
  • calender:像日历

常见的时间表示形式

  • 时间戳:
  • 格式化的时间字符串

datetime 常用的类

练习1 - 获取当前日期和时间

image

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('目录删除成功')