1. datetime模块
Python的datetime模块提供了处理日期和时间的方法,通过它可以进行日期时间的计算和格式化等操作。以下是一些常用的操作:
1.1 获取当前时间
使用datetime库中的datetime对象,可以获取当前的日期和时间。
import datetime
now = datetime.datetime.now()
print("当前时间为:", now)
现在的时间是一个常见的操作,这个方法可以方便的获取系统当前的时间和日期。
1.2 时间的加减
使用datetime.timedelta()实现时间的加减。
import datetime
# 从现在起7天后的时间
d = datetime.datetime.now() + datetime.timedelta(days=7)
print(d.strftime('%Y-%m-%d %H:%M:%S'))
# 从现在起3小时后的时间
d = datetime.datetime.now() + datetime.timedelta(hours=3)
print(d.strftime('%Y-%m-%d %H:%M:%S'))
# 从现在起10分钟后的时间
d = datetime.datetime.now() + datetime.timedelta(minutes=10)
print(d.strftime('%Y-%m-%d %H:%M:%S'))
时间的加减操作可以用于计算时间差或预测时间点,可以实现在指定时间之前或之后某一段时间的操作。
1.3 时间格式化
使用strftime()方法,可以将datetime对象转换为指定格式的字符串。
import datetime
# 将datetime对象转换为字符串
now = datetime.datetime.now()
print(now.strftime('%Y-%m-%d %H:%M:%S'))
将时间转换为可视化的字符串,方便展示和存储。
2. logging模块
Python的logging模块是一个日志记录工具,主要用于跟踪程序的运行状态。可以很方便地记录程序的日志信息,通过对这些信息进行分析和统计,可以快速定位程序中的错误和异常。
2.1 日志级别
Python的logging模块可以设置不同的日志级别,用来输出不同类型的日志信息。以下是Python logging模块中的五个日志级别:DEBUG、INFO、WARNING、ERROR和CRITICAL。
import logging
logging.debug('调试信息')
logging.info('普通信息')
logging.warning('警告信息')
logging.error('错误信息')
logging.critical('严重错误信息')
设置不同级别的日志信息,方便查找不同的问题。
2.2 日志输出
logging的日志可以输出到文件、控制台等,可以根据需要定制输出。
import logging
logging.basicConfig(level=logging.DEBUG, filename='mylog.txt', filemode='w', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
logging.debug('调试信息')
logging.info('普通信息')
logging.warning('警告信息')
logging.error('错误信息')
logging.critical('严重错误信息')
定制日志的输出方式,便于查找和分析。
2.3 日志追踪
logging模块可以使用堆栈信息来追踪代码问题。
import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
def foo(s):
return 10/int(s)
def bar(s):
return foo(s) * 2
def main():
try:
res = bar('0')
except Exception as e:
logging.exception(e)
if __name__ == "__main__":
main()
追踪日志信息的发生位置,便于debug。
2.4 日志过滤
对于一些需要过滤的日志信息,可以定制过滤规则来筛选输出日志。
import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
class MyFilter(logging.Filter):
def filter(self, record):
if record.getMessage().startswith('Starting'):
return False
return True
def main():
logger = logging.getLogger('')
logger.addFilter(MyFilter())
logger.debug('Starting read')
logger.debug('Continuing')
logger.debug('Whew! Finished reading')
if __name__ == "__main__":
main()
通过过滤规则筛选需要的日志信息,方便输出和查找。
总结
Python的datetime和logging模块在日常的开发中经常用到,时间的加减、时间的格式化和输出日志等操作经常出现在不同的场景中。掌握这些模块可以提高我们的开发效率,减少调试和排查的时间,提高开发效率和质量。