一些Python小技巧

datetime.datetime.astimezone(tz=None) 返回一个使用新时区地方时的 datetime 对象。 from datetime import datetime, timezone, timedelta cst_zone = timezone(timedelta(hours=8)) cst_dt = datetime(2018, 12, 20, 8, 0, 0,...

Python解析主目录相对路径

在 Linux 系统和 Windows 系统中,我们使用 ~ 和 ~user 表示用户主目录。 cd ~/Downloads 但是 Python 的 os.path.abspath 函数会认为 ~ 表示目录名称: In [2]: os.path.abspath('~') Out[2]: '/Users/chi/Projects/~' 对此,Python 提供了...

Python中stdout的输出缓存

stdout 中的缓存 首先来看一个例子: #!/usr/bin/env python3 import sys sys.stdout.write("stdout1 ") sys.stderr.write("stderr1 ") sys.stdout.write("stdout2 ") sys.stderr.write("stderr2 ") 将以上代码保存成 Python...

Flask-SQLAlchemy联合查询

一对多关系联合查询 模型定义如下,Category 和 Post 是一对多的关系: class Category(db.Model): __tablename__ = "category" id = db.Column(db.Integer, primary_key=True, autoincrement=True) posts = db.relationship("Post",...

PEP8命名规范

Todo [ ] Class Name中一段的翻译; 总则 Overriding Principle API公开给使用者部分的命名应当能明确地反映出其用途。 命名方式简述 Descriptive: Naming Styles 常见命名方法如下: 单个小写字母,如b; 单个大写字母,如B; 小写单词,如lowercase;...

whoosh和jieba实现中文全文检索

截止目前(2018-8-5),Whoosh 项目已经整整一年没有更新(最后提交于 2017-07-16),作者可能已经弃坑。 简介 Whoosh 是一个纯 Python 实现的全文检索引擎,虽然不如 Elasticsearch,但好处是纯 Python 实现易于集成,在小项目中应用广泛。 Whoosh 自带的分词器不支持中文分词。jieba 是一个中文分词组件,实现了一个供 Whoosh...

Flask项目的目录结构

Flask 是一个非常灵活的 Web 开发框架,因而其目录结构可以有多种形式。 单独实例化扩展对象 在相关文件中单独实例化扩展对象,而不是将扩展对象放入__init__.py中。这是 Flask 官方文档推荐的方式。 引用原作者的一句话: Don’t backward import from root __init__.py. 示例 举个例子,我们使用 Flask-SQLAlchemy...

使用Pipenv管理Python项目

pip + pyvenv 方案的不足 手动更改版本包后,需要定期更新 requirements.txt 文件,以保持项目环境的一致。 项目中含有多个 requirement.txt 文件的,比如区分开发环境和生产环境,现有方案无法满足复杂需要; 卸载包的时候不能处理相关依赖包,造成包管理的混乱; Pipenv 主要特性包含: Enables truly deterministic...

Python中的导入

Python import 的搜索路径 当前目录 环境变量 PYTHONPATH 中指定的路径列表中依次搜索 在 Python 安装路径的 lib 库中搜索 绝对导入 绝对导入有以下几种格式: import foo import foo.bar import foo as bar from foo import bar 除此之外还有一种 from foo import *...

Tornado异步非阻塞请求

什么是异步 同步 IO 我们知道,CPU 的速度远远快于磁盘、网络等 IO。在一个线程中,当遇到 IO 操作时,如读写文件、发送网络请求,就需要等待 IO 操作完成,才能继续进行下一步的操作。这种称之为 同步 IO。 同步 IO 会在进行 IO 操作时,挂起当前线程,导致其他需要 CPU 执行的代码无法被当前线程处理,CPU的高速执行能力和IO设备的龟速(与 CPU...