Skip to content

Instantly share code, notes, and snippets.

View tawateer's full-sized avatar
Focusing

wateer tawateer

Focusing
  • Tencent
  • Beijing
View GitHub Profile

The Best of the Best Practices (BOBP) Guide for Python

A "Best of the Best Practices" (BOBP) guide to developing in Python.

In General

Values

  • "Build tools for others that you want to be built for you." - Kenneth Reitz
  • "Simplicity is alway better than functionality." - Pieter Hintjens
#!/usr/bin/env/python
#
# More of a reference of using jinaj2 without actual template files.
# This is great for a simple output transformation to standard out.
#
# Of course you will need to "sudo pip install jinja2" first!
#
# I like to refer to the following to remember how to use jinja2 :)
# http://jinja.pocoo.org/docs/templates/
#
@tawateer
tawateer / server_info.py
Last active August 29, 2015 14:21
机器信息获取
#/usr/bin/python
#-*- coding: utf-8 -*-
import re
import os
import subprocess
def shell(cmd):
#!/bin/env python
#-*- coding: utf-8 -*-
""" 发布特定分支的 Nginx conf, 这里发布以 autodeploy 开头的分支.
此脚本跑在 Jenkins 任务下, 此任务通过 Jenkins 的 Gerrit Trigger
插件监控 Nginx conf (Gerrit 项目) 的 Ref Updated 和 Change Merged 事件,
而且分支要匹配 **/autodeploy*, 满足条件触发此任务.
1. 先计算出最近一次修改的以 autodeploy 开头的分支,
@tawateer
tawateer / argparse_example.py
Last active August 15, 2022 19:14
python argparse example
#!/bin/env python
""" argparse example.
url: https://mkaz.com/2014/07/26/python-argparse-cookbook/
"""
import argparse
@tawateer
tawateer / tornado_exception.py
Last active August 29, 2015 14:23
tornado中捕获异常并传给client
#!/bin/env python
import tornado.ioloop
import tornado.web
import tornado.httpserver
def _Exception(func):
def _decorator(*args, **kwargs):
@tawateer
tawateer / nginx_deploy.py
Last active August 29, 2015 14:23
Nginx 配置文件发布脚本
#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" Nginx 配置文件发布.
支持使用 lvs http check 发布和 reload 发布两种方式.
"""
@tawateer
tawateer / README.txt
Last active August 29, 2015 14:23
python pkgutil.extend_path 的作用
test 是一个目录:
test
├── __init__.py
└── echo.py
extend_path 会扫描 sys.path 下面的每一个目录, 如果目录下存在 __name__ 这个子目录,
而且子目录下存在 __init__.py 文件, 那么就把子目录加入 __path__ ;
而且 它会扫描 sys.path 的目录下是否有 __name__.pkg 文件, 如果有会把里面的路径都加到 __path__(不做检查).
@tawateer
tawateer / function_partial_example.py
Last active August 29, 2015 14:23
python functools 中 partial 和 wraps 的用处
#!/bin/env python
# -*- coding: utf-8 -*-
""" partial 实例.
看上面的源代码, 可以看出 partial 接受一个函数和若干参数, 返回一个新的函数,新的函数已经包含了之前的函数和参数,
而新函数执行时引入的新参数会和之前的参数相加, 真正执行的函数还是之前的函数.
所以, partial 的作用是动态绑定参数, 第一次用 partial 生成新函数, 第二次继续绑定参数并执行.
@tawateer
tawateer / decorator_example.py
Last active August 29, 2015 14:23
decorator 例子
#!/usr/bin/python
#-*- coding: utf-8 -*-
"""
output:
execute now1():
2013-12-25
call now2():
2013-12-25