前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用faker模拟数据

用faker模拟数据

作者头像
乐百川
发布2019-07-02 10:52:36
6480
发布2019-07-02 10:52:36
举报

版权声明:本文为博主原创文章,转载请注明出处。 https://cloud.tencent.com/developer/article/1454285

做开发的时候常常要模拟一些用户数据,自己编写随机数据虽然也可以,但是如果想要模拟比较复杂的数据,那自己做的话就有些麻烦。faker正是这样一个类库,让我们能非常简单的模拟数据。本文参考自官方文档,如果有兴趣可以查看官方文档,不过

安装faker

首先先来安装faker:

代码语言:javascript
复制
pip install Faker

简单使用

faker用起来也很简单,初始化一个实例,然后调用对应的方法就可以获得随机数据。

代码语言:javascript
复制
from faker import Faker
fake = Faker()

fake.name()
# 'Lucy Cechtelar'

fake.address()
# '426 Jordy Lodge
#  Cartwrightshire, SC 88120-6700'

默认语言是英文,如果要使用其他语言的随机数据,可以简单的向Faker构造函数传递一个代表区域类型的字符串:

代码语言:javascript
复制
fake = Faker('zh_CN')

官方文档列出了所有可用的区域类型以及对应语言的显示实例,常用的自然是en_USzh_CN

数据提供器(Providers)

默认的faker实例自带的方法并不多,只能模拟一些简单数据,但是faker还提供了一种扩展办法,就是添加数据提供器。提供器是一个继承自faker.providers.BaseProvider的类,如果需要自己编写一些新的随机数据生成方法,就可以用提供器。需要注意提供器的类名必须是**Provider**。

代码语言:javascript
复制
from faker import Faker
import random
from faker.providers import BaseProvider


# 自定义Provider
class Provider(BaseProvider):
    def random_hello(self):
        return random.choice(['hello', 'hi'])


fake = Faker('zh_CN')
fake.add_provider(Provider)

print(fake.random_hello())
# hello或hi

当然除非特殊情况,其实没必要自己编写Provider,因为faker自带了一大堆Provider,基本上能满足99%的需求。官方文档列出了一些自带的Provider以及社区编写的第三方Provider,它们的功能如下:

  • 地址(省、州、市、邮政编码、街道等)
  • 银行流水号
  • 颜色(颜色名称、RGB编码、十六进制编码等)
  • 公司(公司名、公司缩写等)
  • 信用卡(信用卡号、卡全名、签发商等)
  • 货币
  • 日期(日期、上下午、日期和时间、年月日、世纪、时间、生日、时区,周数等等)
  • 文件(文件路径、文件类型和mime类型等)
  • 地理(经纬度、包括国家省市经纬度在内的地理位置)
  • 网络(电子邮箱地址、主机名、网址等等)
  • ISBN
  • 职业
  • lorem(句子和文本)
  • 混杂(语言编码、布尔值、UUID、MD5、SHA256、密码、SHA1、二进制内容等等)
  • 人(性别、姓名、称呼以及区分性别的姓名和称呼等)
  • 电话号码
  • 档案(简单和复杂的个人档案信息)
  • Python(decimal、int、str、bool等Python值)
  • ssn
  • 用户代理(opera、chrome、火狐、safari等浏览器的用户代理)

最后来一点代码,模拟一些个人数据:

代码语言:javascript
复制
from faker import Faker
import random
from pprint import pprint

fake = Faker('zh_CN')

def generate_user():
    return dict(name=fake.name(),
                password=fake.password(length=10),
                company=fake.company(),
                job=fake.job(),
                birthday=fake.date_of_birth(minimum_age=0, maximum_age=120),
                telephone=fake.phone_number(),
                address=fake.address())


users = []
for _ in range(0, 2):
    users.append(generate_user())

pprint(users)

'''
[{'address': '江苏省潮州市黄浦长沙街j座 695574',
  'birthday': datetime.date(1951, 3, 4),
  'company': '兰金电子信息有限公司',
  'job': '软件测试',
  'name': '湛莹',
  'password': 'iUCBVtlj&4',
  'telephone': '13383280861'},
 {'address': '青海省玉市浔阳程街w座 965749',
  'birthday': datetime.date(1972, 1, 17),
  'company': '立信电子信息有限公司',
  'job': '网页设计/制作/美工',
  'name': '羊杨',
  'password': '#gyXVr_(S3',
  'telephone': '13699862129'}]
'''

如果要用到更多类型的数据,还是参考官方文档比较好,这里列出了faker包含的模拟数据方法和对应的显示,有需要的话可以看看。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装faker
  • 简单使用
  • 数据提供器(Providers)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档