• Madman
  • ·

Python使用logging模块的SMTPHandl...

如果你想使用 Python 的内置模块 logging 中的 SMTPHandler 将出错时的日志,通过邮件的方式发送给管理员的话,可能你会遇到很多坑,本文将解决诸如 socket.timeout: timed out 和 smtplib.SMTPServerDisconnected: Connection unexpectedly closed: timed out 等错误,亲测有效

  • Madman
  • ·

自动生成文章目录TOC与定位导航

要自动生成博客文章的目录 TOC(Table of Contents),可以在后端生成,比如 Markdown 有 TOC 插件。或者使用前端插件,比如 tocify、toc 等,同时前端插件还可以结合 scrollspy 等来实现定位导航,即向下滚动文章内容时,会自动定位到对应的目录项。本文使用前端 JS 生成目录,展示样式美观且能够定位导航,并支持 3 级目录

  • Madman
  • ·

一文搞懂 MongoEngine 的使用

Flask-MongoEngine 是集成了 MongoEngine 的一个 Flask 插件,并且它可以从 MongoEngine 定义的数据模型中快速生成 WTForms。而 MongoEngine 是一个 Document-Object Mapper (非常类似于 ORM),是 Python 语言的、用来操作 MongoDB 数据库的 DOM 架构

  • Madman
  • ·

Python3 csv模块处理报表数据 - PyQt5制作图形界面

使用Python3 csv模块处理快收后台导出的商场优惠活动交易数据,统计各类优惠券的核销数量,以及实收款等汇总数据。测试数据 "1. 财务明细数据.csv" 已经删除了敏感信息,由于客户不想使用脚本,所以使用 PyQt5 编写了图形界面,再使用 pyinstaller 打包为可执行程序

  • Madman
  • ·

Python 日志模块logging

Python程序中可以使用内置的logging模块,方便的记录运行日志,将日志信息进行分类存储,当程序出现BUG时,可以通过分析日志来定位问题所在

  • Madman
  • ·

Python 正则表达式 re 模块

如果你想匹配的是字面字符串,那么你通常只需要调用基本字符串方法就行, 比如 str.find() , str.endswith() , str.startswith() 或者类似的方法。对于复杂的匹配需要使用正则表达式和 re 模块,如果你想使用同一个模式去做多次匹配,你应该先将模式字符串预编译为模式对象。match() 总是从字符串开始去匹配,如果你想查找字符串任意部分的模式出现位置,...

  • Madman
  • ·

Python 单例模式

单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场,比如整个应用只生成一个配置文件的实例对象。Python 的模块是天然的单例模式,这在大部分情况下应该是够用的,当然,我们也可以使用装饰器、元类等方法

  • Madman
  • ·

Python 闭包与装饰器

在函数内部再定义一个函数,并且内部函数用到了外部函数作用域里的变量(enclosing),那么将这个内部函数以及用到的外部函数内的变量一起称为闭包(Closure)。装饰器(decorator)接受一个callable对象(可以是函数或者实现了__call__方法的类)作为参数,并返回一个callable对象,它经常用于有切面需求的场景,比如:插入日志、性能测试(函数执行时间统计)、事务处理...

  • Madman
  • ·

Python序列化模块 - pickle与json

Python语言特定的序列化模块是pickle,但如果要把序列化搞得更通用、更符合Web标准,就可以使用json模块。json模块的dumps()和loads()函数是定义得非常好的接口的典范。当我们使用时,只需要传入一个必须的参数。但是,当默认的序列化或反序列机制不满足我们的要求时,我们又可以传入更多的参数来定制序列化或反序列化的规则,既做到了接口简单易用,又做到了充分的扩展性和灵活性