【Python】faker模块_生成假数据

官方文档 zh_CN

安装

pip install faker

引用

from faker import Faker

使用

# coding:utf-8
from faker import Faker

if __name__=="__main__":
    # 实例化Faker (默认英文)
    fake = Faker()
    print(fake.name())

常见语言

简体中文:zh_CN
繁体中文:zh_TW
美国英文:en_US
英国英文:en_GB
德文:de_DE
日文:ja_JP
韩文:ko_KR
法文:fr_FR

示例

# coding:utf-8
from faker import Faker

if __name__=="__main__":
    # 实例化Faker (默认英文)
    fake = Faker('zh_CN')
    print(fake.name())

查看faker内置对象

fake.providers

result

[<faker.providers.user_agent.Provider object at 0x059FF130>,
 <faker.providers.ssn.zh_CN.Provider object at 0x059B7F70>,
 <faker.providers.python.Provider object at 0x059B7FE8>,
 <faker.providers.profile.Provider object at 0x059B7FA0>,
 <faker.providers.phone_number.zh_CN.Provider object at 0x059B7E08>,
 <faker.providers.person.zh_CN.Provider object at 0x059B7DC0>,
 <faker.providers.misc.en_US.Provider object at 0x059B7C88>,
 <faker.providers.lorem.zh_CN.Provider object at 0x059B7CD0>,
 <faker.providers.job.zh_CN.Provider object at 0x059B7AC0>,
 <faker.providers.isbn.Provider object at 0x059B7B80>,
 <faker.providers.internet.zh_CN.Provider object at 0x059B7B08>,
 <faker.providers.geo.en_US.Provider object at 0x059B7A18>,
 <faker.providers.file.Provider object at 0x059B7898>,
 <faker.providers.date_time.zh_CN.Provider object at 0x059B7928>,
 <faker.providers.currency.en_US.Provider object at 0x059B7700>,
 <faker.providers.credit_card.en_US.Provider object at 0x059B7418>,
 <faker.providers.company.zh_CN.Provider object at 0x059B7790>,
 <faker.providers.color.en_US.Provider object at 0x059B7508>,
 <faker.providers.barcode.en_US.Provider object at 0x059B7448>,
 <faker.providers.bank.en_GB.Provider object at 0x059B74C0>,
 <faker.providers.automotive.en_US.Provider object at 0x00D19E08>,
 <faker.providers.address.zh_CN.Provider object at 0x059B7328>]

常用方法

person 人物类:性别、姓名等

  fake.name() # 姓名
  fake.last_name() # 姓
  fake.first_name() # 名
  fake.name_male() # 男性姓名
  fake.name_female() # 女性姓名

address 地址

  fake.country()  # 国家
  fake.city()  # 城市
  fake.city_suffix()  # 城市的后缀,中文是:市或县
  fake.address()  # 地址
  fake.street_address()  # 街道
  fake.street_name()  # 街道名
  fake.postcode()  # 邮编
  fake.latitude()  # 维度
  fake.longitude()  # 经度

company 公司类:公司名、email、公司名前缀等

  fake.company() # 公司名
  fake.company_suffix() # 公司名后缀

color 颜色类

  fake.hex_color() # 16进制表示的颜色
  fake.rgb_css_color() # css用的rgb色
  fake.rgb_color()  # 表示rgb色的字符串
  fake.color_name() # 颜色名字
  fake.safe_hex_color()  #安全16进制色
  fake.safe_color_name() # 安全颜色名字

credit_card 银行卡类:卡号、有效期、类型等

  fake.credit_card_number(card_type=None) # 卡号
  fake.credit_card_provider(card_type=None) # 卡的提供者
  fake.credit_card_security_code(card_type=None)# 卡的安全密码
  fake.credit_card_expire() # 卡的有效期
  fake.credit_card_full(card_type=None) # 完整卡信息

date_time 时间日期类:日期、年、月等

  fake.date_time(tzinfo=None) # 随机日期时间
  fake.iso8601(tzinfo=None) # 以iso8601标准输出的日期
  fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None) # 本月的某个日期
  fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None) # 本年的某个日期
  fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)  # 本年代内的一个日期
  fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None)  # 本世纪一个日期
  fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None)  # 两个时间间的一个随机时间
  fake.timezone() # 时区
  fake.time(pattern="%H:%M:%S") # 时间(可自定义格式)
  fake.am_pm() # 随机上午下午
  fake.month() # 随机月份
  fake.month_name() # 随机月份名字
  fake.year() # 随机年
  fake.day_of_week() # 随机星期几
  fake.day_of_month() # 随机月中某一天
  fake.time_delta() # 随机时间延迟
  fake.date_object()  # 随机日期对象
  fake.time_object() # 随机时间对象
  fake.unix_time() # 随机unix时间(时间戳)
  fake.date(pattern="%Y-%m-%d") # 随机日期(可自定义格式)
  fake.date_time_ad(tzinfo=None)  # 公元后随机日期

file 文件类:文件名、文件类型、文件扩展名等

  fake.file_name(category="image", extension="png") # 文件名(指定文件类型和后缀名)
  fake.file_name() # 随机生成各类型文件
  fake.file_extension(category=None) # 文件后缀
  fake.mime_type(category=None) # mime-type

internet 互联网类

  fake.ipv4(network=False)  # ipv4地址
  fake.ipv6(network=False)  # ipv6地址
  fake.uri_path(deep=None) # uri路径
  fake.uri_extension() # uri扩展名
  fake.uri() # uri
  fake.url() # url
  fake.image_url(width=None, height=None)  # 图片url
  fake.domain_word() # 域名主体
  fake.domain_name() # 域名
  fake.tld() # 域名后缀
  fake.user_name() # 用户名
  fake.user_agent() # UA
  fake.mac_address() # MAC地址
  fake.safe_email() # 安全邮箱
  fake.free_email() # 免费邮箱
  fake.company_email()  # 公司邮箱
  fake.email() # 邮箱

lorem 乱数假文

  fake.text(max_nb_chars=200) # 随机生成一篇文章
  fake.word() # 随机单词
  fake.words(nb=3)  # 随机生成几个字
  fake.sentence(nb_words=6, variable_nb_words=True)  # 随机生成一个句子
  fake.sentences(nb=3) # 随机生成几个句子
  fake.paragraph(nb_sentences=3, variable_nb_sentences=True)  # 随机生成一段文字(字符串)
  fake.paragraphs(nb=3)  # 随机生成成几段文字(列表)

phone_number 手机号码类:手机号、运营商号段

  fake.phone_number() # 手机号码
  fake.phonenumber_prefix() # 运营商号段,手机号码前三位

user_agent 用户代理

  faker.chrome(version_from=13, version_to=63, build_from=800, build_to=899)
  faker.firefox()
  faker.internet_explorer()
  faker.linux_platform_token()
  faker.linux_processor()
  faker.mac_platform_token()
  faker.mac_processor()
  faker.opera()
  faker.safari()
  faker.user_agent()
  faker.windows_platform_token()

Geo 用于生成地理位置相关数据,包括纬度、经度、时区等

  faker.coordinate(center=None, radius=0.001)	# Decimal('-114.420686')
  faker.latitude()	# Decimal('-9.772541')
  faker.latlng()	# (Decimal('-27.0730915'), Decimal('-5.919460'))
  faker.local_latlng(country_code="US", coords_only=False)	# ('41.47892', '-87.45476', 'Schererville', 'US', 'America/Chicago')
  faker.location_on_land(coords_only=False)	# ('12.74482', '4.52514', 'Argungu', 'NG', 'Africa/Lagos')
  faker.longitude()	# Decimal('40.885895')

Misc 用于生成模糊数据,如密码、sha1、sha256、md5 等加密后的内容

  faker.boolean(chance_of_getting_true=50)	# True
  faker.md5(raw_output=False)	# '3166fa26ffd3f2a33e020dfe11191ac6'
  faker.null_boolean()	# False
  faker.password(length=10, special_chars=True, digits=True, upper_case=True, lower_case=True)	# 'W7Ln8La@%O'
  faker.sha1(raw_output=False)	# 'c8301a2a79445439ee5287f38053e4b3a05eac79'
  faker.sha256(raw_output=False)	# '1e909d331e20cf241aaa2da894deae5a3a75e5cdc35c053422d9b8e7ccfa0402'
  faker.uuid4(cast_to=<class 'str'>)	# '6e6fe387-6877-48d9-94ea-4263c4c71aa5'

barcode 条码类

  fake.ean8()  # 8位条码
  fake.ean13()  # 13位条码

job 工作
ssn 社会安全码(身份证号码)
currency 货币
数据共享:通过seed保持数据一致

from faker import Faker


class Test:
    def __init__(self):
        self.fk = Faker(locale="zh-CN")

    def test01(self):
        Faker.seed(1111)
        print(self.fk.name())

    def test02(self):
        Faker.seed(1111)
        print(self.fk.name())


if __name__ == '__main__':
    cl = Test()
    cl.test01()
    cl.test02()

张建
张建

自定义内置数据

from faker import Faker
from faker.providers import BaseProvider


class PY36(BaseProvider):
    names = ('张三', '李四', '王五', '赵六')

    def py36_name(self):
        return self.random_element(PY36.names)  #在names中随机取一个值

# 添加provider
fk = Faker(locale='zh_CN')
fk.add_provider(PY36)
print(fk.py36_name())
posted @ 2022-07-06 11:17  Phoenixy  阅读(441)  评论(0)    收藏  举报