• 用Facker更优雅地造测试数据

    我们开发系统时,经常需要造一些假数据用于测试。

    举个例子,设计一个学生管理系统,测试注册功能,总需要一些用户信息吧。 我猜大部分人都会填:用户 aaaa ,密码 1111 ,手机号码 1111 ……感觉略无追求~

    那么,有没有办法造一些看上去比较真实的数据呢?肯定是有的——人是活的嘛~

    但自己造数据很累,有没有不需要大脑的方法的? 还真有,这就是本文要介绍的一个 Python 模块—— Faker

    安装

    其实,这节可以不必说, Python 装包无非就是 pip 嘛:

    1
    
    $ pip install Faker
    
    阅读全文
  • 用exchangelib发送邮件

    exchangelib 是一个用于操作 Exchange 邮箱的第三方库,其接口设计简单易用,常用功能如下:

    • 服务器自动发现( autodiscover
    • 对象搜索( searching
    • 对象创建( creating
    • 对象更新( updating
    • 对象发送( sending
    • 对象删除( deleting
    • etc

    抢先一览

    下面这个例子仅用若干行代码便实现了打印输出收件箱前 100 封邮件:

    1
    2
    3
    4
    5
    6
    7
    
    from exchangelib import Credentials, Account
    
    credentials = Credentials('john@example.com', 'topsecret')
    account = Account('john@example.com', credentials=credentials, autodiscover=True)
    
    for item in account.inbox.all().order_by('-datetime_received')[:100]:
            print(item.subject, item.sender, item.datetime_received)
    

    将邮箱账号和密码传给 exchangelib 之后,即可通过简单的函数调用完成各种不可以思议的操作!

    阅读全文
  • 用FastAPI编写RESTful接口

    安装

    开始之前,需要先安装 fastapi 包,一般使用 pip 命令即可:

    1
    
    $ pip install fastapi
    

    此外,还需要一个 ASGI 服务器,生产环境可以使用 UvicornHypercorn

    阅读全文
  • Python程序连接MongoDB入门教程

    本教程译自 PyMongo 官方教程 PyMongo Tutorial ,旨在介绍 PyMongo 操作 MongoDB 的基本用法,以快速形成开发能力。

    准备环境

    开始之前,需要先安装 PyMongo 包,一般使用 pip 命令即可:

    1
    
    $ pip install pymongo
    

    PyMongo 报安装完毕后,即可将其 import 到程序中:

    1
    
    >>> import pymongo
    
    阅读全文
  • 用Ipy处理IP地址和网段

    IPy 是一个用来处理 IP 地址和网段的类库。

    IP地址

    IP 类用来表示 IP 地址, IPv4IPv6 都支持。

    1
    2
    3
    4
    5
    
    >>> from IPy import IP
    >>> IP('10.0.0.0').version()
    4
    >>> IP('::1').version()
    6
    

    可以判断 IP 类型:

    1
    2
    
    >>> ip.iptype()
    'PRIVATE'
    
    阅读全文
  • 用OpenPyXL读写Excel表格

    Python 可以读写 Excel 表格吗?

    当然可以。 Python 下有很多类库可以做到, openpyxl 就是其中的佼佼者。

    openpyxl设计非常漂亮 ,你一定会喜欢它!不信请往下看:

    工作簿

    开始 openpyxl 前,无需提前建好工作簿( Workbook )。 只需导入 Workbook 类,便可在内存中创建新工作簿并开始操作:

    1
    2
    
    >>> from openpyxl import Workbook
    >>> wb = Workbook()
    

    新建的工作簿默认预先建好一个工作表,通过 active 属性即可获取:

    1
    
    >>> ws = wb.active
    
    阅读全文
  • 用zbarlight识别二维码

    zbarlightzbar 库的一个封装,可以方便地读取(识别)二维码内容。

    安装

    安装 zbarlight 之前,需要先安装 zbar 以及其头文件。因此,安装方式因平台而异:

    Debian

    1
    2
    
    sudo apt-get install libzbar0 libzbar-dev
    sudo pip install zbarlight
    

    Mac OS X

    1
    2
    3
    4
    
    brew install zbar
    export LDFLAGS="-L$(brew --prefix zbar)/lib"
    export CFLAGS="-I$(brew --prefix zbar)/include"
    pip install zbarlight
    
    阅读全文
  • Python程序命令行参数解析

    我们经常需要调整程序的执行行为,最佳实践应该是:实现规范的命令行参数 ,而不是动不动就去改代码。试想一下,程序配置文件路径是通过命令行指定好呢?还是写死在代码里好呢? 每个程序都应该实现 -h 或者 –help 参数选项,输出帮助信息。这样一来,谁都可以通过该途径获悉程序用法,应用自如。这便是惯例的力量! 实现命令行参数的成本也不高,大部分语言都提供了足够方便的程序库,无需也不推荐重复造轮子。Python 程序可以通过标准库 argparse 解析命令行参数。 快速上手 接下来,以一个名为 AgentX 的程序为例,讲解如何使用 argparse 模块。AgentX 的用法如下: 1 2 3 4 5 6 7 8 9 10 $ python agentx.py -h usage: agentx [-h] [-c conf_path] action positional arguments: action action to carry out: status/start/stop optional arguments: -h, --help show this help message and exit -c conf_path, --conf conf_path configuration file path -h 选项显示帮助文档;-c 选项指定配置文件目录;位置参数 action 指定要执行的操作。
    阅读全文
  • 更优雅地造测试数据

    开发系统时,经常需要一些伪数据用于测试。

    举个例子,设计一个学生管理系统,测试注册功能,总需要一些用户信息吧。我猜大部分人都会填:用户 aaaa ,密码 1111 ,手机号码 1111 ……感觉略无追求~

    那么有没有办法造一个看上是真的数据呢?自己造很累,有没有不需要大脑的方法的?

    还真有,这就是本文要介绍的一个Python模块——Faker

    阅读全文
  • 使用GDB调试Python程序

    最近用在开发一个 agent 程序,需要支持 LinuxFreeBSDWindows 等操作系统。 复杂的机器环境,导致一系列诡异问题,尽管代码发布前在不少测试机上验证过。

    Python 程序吐 coredump 文件怎么办? 很多人会想到用 gdb 加载 coredump 文件,然后查看 信号堆栈 信息,据此分析原因。 堆栈信息在调试中非常有用,可别忘了,待调试的是 Python 代码,而 gdb 提供的是 C 堆栈信息! 难道要撸 Python 源码,然后分析各种核心数据结构吗? 有什么方式可以查看到 Python 堆栈信息吗?

    还遇到过另一个问题,一个 Python 进程突然间陷入死循环,所有其他线程都调度不到。 遇到这种情况,首先可能需要知道死循环到底在干什么。 如何获悉呢?可能用 strace 跟一下系统调用可以看出一点端倪。 但是一个堆栈信息更为具体更有说服力,就算是只有 C 堆栈信息有时也是足以说明问题的。

    gdb 就可以解决以上难题(其实远不止),接下来,我们一起看看具体要怎么操作吧~

    阅读全文