时间: 2020-09-4|tag: 19次围观|0 条评论

简介

faker可以为你生成假数据。无论你需要引导你的数据库,创建好看的XML文档,还是对从生产服务中获取的数据进行脱敏,Faker都是适合你。

安装

pip install faker

基本用法

>>> from faker import Faker>>> fake = Faker()>>> fake.name()'Lance Yates'>>> fake.address()'848 Edwin Stravenue Apt. 448\nLoriburgh, ND 43095'>>> fake.text()'Mean economy fight organization else throughout sport. Over Congress also rich should mind. Candidate factor investment national behind stock do.'>>> fake = Faker('zh_CN')>>> fake.name()'周磊'>>> fake.address()'河北省霞县静安刘街D座 151159'>>> fake.text()'可以很多完成进入起来项目以及.主题同时现在项目来源.\n责任系统更多作者根据质量控制.业务留言正在一个起来目前记者.\n继续其中觉得其实语言.行业重要文件环境发布继续.最后各种其他发布.来自电脑教育社会.\n你的企业他们应该.功能东西城市到了准备.出现自己显示搜索汽车一起.\n中心经验公司进入所有地区.社区名称登录服务其中.男人决定在线只是活动.'>>> for _ in range(10):...   print(fake.name())... 徐辉卢瑜崔红梅苏玉兰苏兰英杨雷许淑兰鲁佳张帆李倩

Providers

每一个生成器的属性(name, address和lorem)都被称为 "fake"。faker生成器有很多,打包成 "providers"。

>>> from faker import Faker>>> from faker.providers import internet>>> fake = Faker()>>> fake.add_provider(internet)>>> print(fake.ipv4_private())172.29.38.251

本地化

faker.Faker可以接受一个locale作为参数,以返回本地化的数据。如果没有找到本地化的提供者,工厂会返回到默认的en_US locale。

>>> from faker import Faker>>> from faker.providers import internet>>> fake = Faker()>>> fake.add_provider(internet)>>> print(fake.ipv4_private())172.29.38.251>>> >>> from faker import Faker>>> fake = Faker('it_IT')>>> print(fake.name())Gian Corbo >>> >>> from faker import Faker>>> fake = Faker(['it_IT', 'en_US', 'ja_JP'])>>> print(fake.name())Elizabeth Green>>> print(fake.name())Coriolano Liverotti>>> print(fake.name())井上 稔

目前支持的语言如下:

ar_EG - Arabic (Egypt)ar_PS - Arabic (Palestine)ar_SA - Arabic (Saudi Arabia)bg_BG - Bulgarianbs_BA - Bosniancs_CZ - Czechde_DE - Germandk_DK - Danishel_GR - Greeken_AU - English (Australia)en_CA - English (Canada)en_GB - English (Great Britain)en_IN - English (India)en_NZ - English (New Zealand)en_US - English (United States)es_ES - Spanish (Spain)es_MX - Spanish (Mexico)et_EE - Estonianfa_IR - Persian (Iran)fi_FI - Finnishfr_FR - Frenchhi_IN - Hindihr_HR - Croatianhu_HU - Hungarianhy_AM - Armenianit_IT - Italianja_JP - Japaneseka_GE - Georgian (Georgia)ko_KR - Koreanlt_LT - Lithuanianlv_LV - Latvianne_NP - Nepalinl_NL - Dutch (Netherlands)no_NO - Norwegianpl_PL - Polishpt_BR - Portuguese (Brazil)pt_PT - Portuguese (Portugal)ro_RO - Romanianru_RU - Russiansl_SI - Slovenesv_SE - Swedishtr_TR - Turkishuk_UA - Ukrainianzh_CN - Chinese (China)zh_TW - Chinese (Taiwan)

命令行使用

$ faker -husage: faker [-h] [--version] [-v] [-o output] [-l LOCALE] [-r REPEAT]             [-s SEP] [--seed SEED] [-i [INCLUDE [INCLUDE ...]]]             [fake] [fake argument [fake argument ...]]faker version 4.0.3positional arguments:  fake                  name of the fake to generate output for (e.g. profile)  fake argument         optional arguments to pass to the fake (e.g. the                        profile fake takes an optional list of comma separated                        field names as the first argument)optional arguments:  -h, --help            show this help message and exit  --version             show program's version number and exit  -v, --verbose         show INFO logging events instead of CRITICAL, which is                        the default. These logging events provide insight into                        localization of specific providers.  -o output             redirect output to a file  -l LOCALE, --lang LOCALE                        specify the language for a localized provider (e.g.                        de_DE)  -r REPEAT, --repeat REPEAT                        generate the specified number of outputs  -s SEP, --sep SEP     use the specified separator after each output  --seed SEED           specify a seed for the random generator so that                        results are repeatable. Also compatible with 'repeat'                        option  -i [INCLUDE [INCLUDE ...]], --include [INCLUDE [INCLUDE ...]]                        list of additional custom providers to user, given as                        the import path of the module containing your Provider                        class (not the provider class itself)supported locales:  ar_AA, ar_EG, ar_JO, ar_PS, ar_SA, bg_BG, bs_BA, cs_CZ, de, de_AT, de_CH, de_DE, dk_DK, el_CY, el_GR, en, en_AU, en_CA, en_GB, en_IE, en_IN, en_NZ, en_PH, en_TH, en_US, es, es_CA, es_ES, es_MX, et_EE, fa_IR, fi_FI, fil_PH, fr_CH, fr_FR, fr_QC, he_IL, hi_IN, hr_HR, hu_HU, hy_AM, id_ID, it_IT, ja_JP, ka_GE, ko_KR, la, lb_LU, lt_LT, lv_LV, mt_MT, ne_NP, nl_BE, nl_NL, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sk_SK, sl_SI, sv_SE, ta_IN, th_TH, tl_PH, tr_TR, tw_GH, uk_UA, zh_CN, zh_TW  Faker can take a locale as an optional argument, to return localized data. If  no locale argument is specified, the factory falls back to the user's OS  locale as long as it is supported by at least one of the providers.     - for this user, the default locale is en_US.  If the optional argument locale and/or user's default locale is not available  for the specified provider, the factory falls back to faker's default locale,  which is en_US.examples:  $ faker address  968 Bahringer Garden Apt. 722  Kristinaland, NJ 09890  $ faker -l de_DE address  Samira-Niemeier-Allee 56  94812 Biedenkopf  $ faker profile ssn,birthdate  {'ssn': u'628-10-1085', 'birthdate': '2008-03-29'}  $ faker -r=3 -s=";" name  Willam Kertzmann;  Josiah Maggio;  Gayla Schmitt;$ faker -l de_DE addressMina-Adolph-Straße 1/590627 Hildburghausen$ faker profile ssn,birthdate{'ssn': '415-39-7809', 'birthdate': datetime.date(1936, 5, 17)}$ faker -r=3 -s=";" name -l zh_CN李秀珍;潘慧;毛秀荣;

自定义Provider

from faker import Fakerfake = Faker()# first, import a similar Provider or use the default onefrom faker.providers import BaseProvider# create new provider classclass MyProvider(BaseProvider):    def foo(self):        return 'bar'# then add new provider to faker instancefake.add_provider(MyProvider)# now you can use:fake.foo()# 'bar'

参考资料

如何定制词组

from faker import Fakerfake = Faker()my_word_list = ['danish','cheesecake','sugar','Lollipop','wafer','Gummies','sesame','Jelly','beans','pie','bar','Ice','oat' ]fake.sentence()# 'Expedita at beatae voluptatibus nulla omnis.'print(fake.sentence(ext_word_list=my_word_list))# 'Oat beans oat Lollipop bar cheesecake.'

随机

生成器上的.random 属性返回用于生成值的 random.Random 实例。 对于想要影响所有faker实例的插件来说,使用这个可能会很有用。

在使用Faker进行单元测试时,经常会希望生成相同的数据集。为了方便起见,生成器还提供了seed()方法,它给共享的随机数生成器下种子。用相同版本的faker和种子调用相同的方法会产生相同的结果。

每个生成器也可以通过使用 seed_instance() 方法切换到自己的 random.Random.Random 实例,与共享的随机数生成器分开,其作用相同。比如说

请注意,由于我们不断地更新数据集,因此不能保证结果在不同的补丁版本之间是一致的。如果你在测试中对结果进行硬编码,请确保你将Faker的版本钉在补丁号上。

from faker import Fakerfake = Faker()fake.randomfake.random.getstate()from faker import Fakerfake = Faker()Faker.seed(4321)print(fake.name())# 'Margaret Boehm'from faker import Fakerfake = Faker()fake.seed_instance(4321)print(fake.name())# 'Margaret Boehm'

文章转载于:https://www.jianshu.com/p/11e1e96a6265

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《python数据生成工具faker快速入门
   

还没有人抢沙发呢~