Python 时间 Cygwin
2023-02-24
Cygwin 下执行一个 Python 脚本,其中 datetime.now() 获取到的时间居然是 UTF 时间。
执行 date 命令也是如此。
执行 tzselect,三次分别选 Asia,China,Beijing Time,然后就好了。
命令中有提示:如果要永久有效,需要在 ~/.profile 中加入 TZ='Asia/Shanghai'。
关键是,TZ 其实有配置:
export | grep TZ
declare -x TZ="Asia/Shanghai"
Python
2022-12-19
今日发现一个 Python 2.7 的一个大坑:部分版本下 JSON 解析字符串为 str 类型,部分版本解析成 unicode 类型。
Python 2.7 (r27:82500, Apr 12 2016, 21:09:36)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import json; print(repr(json.loads('"a"')));
'a'
Python 2.7.15 (default, Jul 22 2019, 17:38:55)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import json; json.loads('"s"'); exit();
's'
Python 2.7.15 (default, Jun 26 2018, 11:17:18)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import json; json.loads('"s"'); exit();
u's'
Python 2.7.18 (default, Mar 23 2022, 15:07:54)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import json; json.loads('"s"'); exit();
u's'
找到一个相关的 Issue:json.loads() on str should return unicode, not str,
对应 GitHub 上的 Issue#54247。
根据相关内容,这个问题影响了 Python 2.7 的一些版本。
还有:json.loads() returns str instead of unicode for empty strings,
对应 GitHub 上的 Issue#56191。
Python 测试 pytest
2022-07-12
- 全局
setup_module(module) / teardown_module(module) 引入包的时候执行
setup_function(function) / teardown_function(function)
- 模块级别
setup() / teardown() 测试模块载入的时候执行
- 类级别
setup_class(cls) / teardown_class(cls)
setup_method(self, method) / teardown_method(self, method)
setup(self) / teardown(self) nose 语法,会被上面两个方法覆盖
Supported nose Idioms
setup() and teardown() at module/class/method level: any function or method called setup will be called during the setup phase for each test, same for teardown.
SkipTest exceptions and markers
- setup/teardown decorators
__test__ attribute on modules/classes/functions
- general usage of nose utilities
Pipenv Python
2022-05-16
pipenv requirements > requirements.txt && pipenv requirements --dev-only > requirements-dev.txt
开发者 Python
2022-04-19
一些阶段性目标:
-
参照网上查到的博客和文档,先列出大纲以及制定学习计划
大概以下五个主题的内容:
-
Python 标准库
- Tornado
- Redis
- RabbitMQ (pika)
-
MySQL (SQLAlchemy/pymysql)
-
如果资源方面允许,可以实现一个内部系统开发,进行编码和设计方面的指导
- 阅读项目文档,理解邮件和短信的处理流程,项目结构,以及每个项目的核心逻辑
- 给定一个周边项目进行开发维护,小任务开发(Code Review)
- 从写文档和单元测试开始,逐渐参与核心项目的开发和维护
其他:Linux 基础,Git,我们的开发流程和规范
标准库
- 常用基础库: os, sys, shutil, re, time, datetime, ramdom, json, pickle ...
- 日志: logging
- HTTP 相关: urllib, http
- 邮件相关: email, smtplib, smtpd
- 编码和加密相关: md5, sha, base64, hmac, binascii
- 单元测试: unitest 非常重要
Tornado
- Web 框架先走起来
- 基本用法,比如
add_timeout, call_later, add_callback ...
- 了解 IOLoop/IOStream
- 项目开发过程中的一些实践
Redis
- 安装
redis-cli
- 数据类型
- 命令清单
redis 库
RabbitMQ
- 基本概念 (Exchange / Queue / Binding / Channel / Connection)
- 安装和使用
pika 库
- 发布/订阅 (生产, 消费)
MySQL
- 数据类型
- 连接
- 索引
pymysql / mysqlclient 库
- SQLAlchemy
Python pip pipx
2022-01-13
pipx 和 pip 一样,也是来自 PyPA 的项目。
PS: PyPA 的知名项目包括 pipenv, pip, pipx, virtualenv, flit, twine。
pipx 的作用是将包安装在虚拟环境中(利用标准库中的 venv)。用来安装一些 Python 写的工具就很好,不需要关心这些工具的代码时。
Python Poetry
2022-01-12
我研究了半天之后感觉无法掌握 poetry,决定放弃,还是用我的 Pipenv。

Poetry 是一个 Python 虚拟环境管理器。
Python 测试 pytest
2022-01-10
给 tmuxp 提了一个 Issue, 作者 @tony (Tony 老师?😜) 让我选择是自己写测试,还是他来写。
我表达我对 pytest 不熟之后,他给我一点建议:
所以我先学习学习,然后抽空把 test 自己写了。
Python GIL
2021-10-22
开源中国上看到有人通过一些实验验证来视图说服 Python 核心团队移除 GIL,根据他的数据,移除 GIL 可以大幅提升多线程性能(19.8 倍)。
Python
2021-10-11
Python 3.10 前几天刚发布。
Python 3.11 据说性能可以提升 2 - 5 倍(2021/05/18, 关于 CPython 的 Shannon Plan),期待!
回顾以下 Python 的版本历史。