
19

求求你,别再手工造假数据了,fake了解一下
source link: https://foofish.net/python-fake-data.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

项目开发初期,为了测试方便,我们总要造不少假数据到系统中,尽量模拟真实环境。
比如要创建一批用户,创建一段文本,或者是电话号码,抑或着是街道地址或者IP地址等等。
以前要么就是键盘一顿乱敲,随便造个什么字符串出来,当然最后谁也不认识谁。
现在你不要这样做了。
用faker就能满足你的一切需求。
先安装faker
pip install Faker
创建faker对象
from faker import Faker fake = Faker()
fake 一个名字
>>> fake.name() 'Joshua Reed'
fake 一个地址
>>> fake.address() '554 Hoffman Locks Suite 216\nElizabethstad, RI 23081'
fake 一个浏览器UA
>>> fake.chrome() 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/35.0.870.0 Safari/532.0'
fake 一个日期
>>> fake.date() '1984-08-17' >>> fake.date_object() datetime.date(1980, 9, 27)
但凡是你需要的东西他都能帮你fake,如果你不知道它能fake哪些东西,可以用 dir(fake)查看一下。
它能fake近300种东西出来,如果还有你满足不了需求的,你可以像它的Github提交PR或者自己扩展
上面fake的东西,比如名字,街道都是英文的,他支不支持中文呢?
可以的
只要在创建Faker对象的时候,指定语言就可以
>>> fake = Faker("zh_CN") >>> fake.name() '庄阳' >>> fake.address() '浙江省台北县沈北新北京街i座 285123' >>> fake.phone_number() '13223924289'
你会发现,fake的假数据还挺真实的。除了中文,它还支持日语、韩语、德语等上百种语言
当然,它还支持命令行模式
-h 查看帮助文档
faker [-h] [--version] [-o output] [-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}] [-r REPEAT] [-s SEP] [-i {package.containing.custom_provider otherpkg.containing.custom_provider}] [fake] [fake argument [fake argument ...]] C:\Users\lzjun\workspace\>faker name Samantha Washington
我可不可以创建属于自己的fake数据呢?比如我想随机生成一个基于Android设备的User-Agent
from faker import Faker fake = Faker() from faker.providers import BaseProvider # 创建自定义的provider class MyProvider(BaseProvider): def android_ua(self): return 'xxxxxx' # 添加一个provider fake.add_provider(MyProvider) >>>fake.android_ua() >>>'xxxxxx'
是不是太简单了。另外,faker还是一个非常值得作为源码研究的库。
有问题可以扫描二维码和我交流
关注公众号「Python之禅」,回复「1024」免费获取Python资源

Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK