相信广大秃顶朋友们在编写程序过程中,经常要构造很多数据来进行测试
如果手动造数据、将花费大把精力,这不合理
正确做法 使用Python中的 Faker 库,用它生成各种各样的伪数据。
安装Faker
使用pip安装(python3 使用 pip3)
pip install Faker
基本用法
from faker import Faker # 1
fake = Faker() # 2
fake.name() # 3
# Donna Kelly
fake.address() # 4
# 519 Donna River
# Port Natalie, SD 87384
-
从faker模块导入Faker这个类。
-
实例化,保存到变量fake中。
-
调用name()方法随机生成一个名字。
-
调用address()方法随机生成地址信息。
如果要生成中文的随机数据,我们可以在实例化时给locale参数传入‘zh_CN’这个值:
from faker import Faker
fake = Faker(locale='zh_CN')
fake.name()
# 庞超
fake.address()
# 河北省辛集县合川张街p座 489476
如果要生成中文繁体字,则可以传入中国台湾这个地区的值'zh_TW'(当然地址显示的是台湾的):
from faker import Faker
fake = Faker(locale='zh_TW')
fake.name()
# 羅婉婷
fake.address()
# 16934 大里縣水源巷35號之0
如果要生成其他语种或地区的数据,我们可以传入相应的地区值:
ar_EG - Arabic (Egypt)
ar_PS - Arabic (Palestine)
ar_SA - Arabic (Saudi Arabia)
bg_BG - Bulgarian
bs_BA - Bosnian
...
其他方法
注:个别方法具有针对性,比如province()方法适用中国,但不适用美国及其他一些国家。
地址
fake.address() # 地址
# '香港特别行政区大冶县上街钟街k座 664713'
fake.building_number() # 楼名
# 'v座'
fake.city() # 完整城市名
# '长春县'
fake.city_name() # 城市名字(不带市县)
# '梧州'
fake.city_suffix() # 城市后缀名
# '市'
fake.country() # 国家名称
# '厄立特里亚'
fake.country_code(representation="alpha-2")
# 'BZ' # 国家编号
fake.district() # 地区
# '沙湾'
fake.postcode() # 邮编
# '332991'
fake.province() # 省
# '河北省'
fake.street_address() # 街道地址
# '武汉街D座'
fake.street_name() # 街道名称
# '广州路'
fake.street_suffix() # 街道后缀名
# '路'
汽车
fake.license_plate() # 牌照
# 'ZCO 000'
银行
fake.bank_country() # 银行所属国家
# 'GB'
fake.bban() # 基本银行账号
# 'TPET9323218579379'
fake.iban() # 国际银行代码
# 'GB82IRVM1531009974701'
条形码
fake.ean(length=13) # EAN条形码
# '5456457843465'
fake.ean13() # EAN13条形码
# '2689789887590'
fake.ean8() # EAN8条形码
# '52227936'
颜色
fake.color_name() # 颜色名称
# 'Orange'
fake.hex_color() # 颜色十六进制值
# '#a5cb7c'
fake.rgb_color() # 颜色RGB值
# '15,245,42'
fake.rgb_css_color() # CSS颜色值
# 'rgb(15,70,13)'
fake.safe_color_name() # 安全色
# 'aqua'
fake.safe_hex_color() # 安全色十六进制值
# '#881100'
公司
fake.bs() # 商业用词
# 'synthesize strategic vortals'
fake.catch_phrase() # 妙句(口号)
# 'Robust even-keeled service-desk'
fake.company() # 公司名称
# '富罳科技有限公司'
fake.company_prefix() # 公司名称前缀
# '商软冠联'
fake.company_suffix() # 公司名称后缀
# '网络有限公司'
信用卡
fake.credit_card_expire(start="now", end="+10y", date_format="%m/%y") # 过期年月
# '11/20'
fake.credit_card_full(card_type=None) # 完整信用卡信息
# 'VISA 16 digit\n秀珍 卢\n4653084445257690 11/19\nCVC: 935\n'
fake.credit_card_number(card_type=None) # 信用卡卡号
# '4339481813664365360'
fake.credit_card_provider(card_type=None) # 信用卡提供商
# 'VISA 19 digit'
fake.credit_card_security_code(card_type=None) # 信用卡安全码
# '597'
货币
fake.cryptocurrency() # 加密货币代码+名称
# ('TRX', 'TRON')
fake.cryptocurrency_code() # 加密货币代码
# 'MZC'
fake.cryptocurrency_name() # 加密货币名称
# 'Ripple'
fake.currency() # 货币代码+名称
# ('GNF', 'Guinean franc')
fake.currency_code() # 货币代码
# 'SOS'
fake.currency_name() # 货币名称
# 'Lebanese pound'
时间
fake.am_pm() # AM或PM
# 'PM'
fake.century() # 世纪
# 'XII'
fake.date(pattern="%Y-%m-%d", end_datetime=None)
# '1998-05-13'
fake.date_between(start_date="-30y", end_date="today") # 日期(可设置限定范围)
# datetime.date(2014, 8, 17)
fake.day_of_month() # 几号
# '23'
fake.day_of_week() # 星期几
# 'Tuesday'
fake.future_date(end_date="+30d", tzinfo=None) # 未来日期
# datetime.date(2019, 10, 28)
fake.future_datetime(end_date="+30d", tzinfo=None) # 未来日期和时间
# datetime.datetime(2019, 10, 28, 21, 4, 35)
fake.iso8601(tzinfo=None, end_datetime=None) # iso8601格式日期和时间
# '1995-04-10T00:45:01'
文件
fake.file_extension(category=None) # 文件扩展名
# 'avi'
fake.file_name(category=None, extension=None) # 文件名
# '专业.pptx'
fake.file_path(depth=1, category=None, extension=None) # 文件路径
# '/的话/以上.ods'
fake.mime_type(category=None) # MIME类型
# 'application/xop+xml'
fake.unix_device(prefix=None) # UNIX设备
# '/dev/xvdq'
fake.unix_partition(prefix=None) # UNIX分区
# '/dev/xvdc6'
坐标
fake.coordinate(center=None, radius=0.001) # 坐标
# Decimal('147.543284')
fake.latitude() # 纬度
# Decimal('66.519139')
fake.latlng() # 经纬度
# (Decimal('55.3370965'), Decimal('-15.427896'))
fake.local_latlng(country_code="US", coords_only=False) # 返回某个国家某地的经纬度
# ('25.67927', '-80.31727', 'Kendall', 'US', 'America/New_York')
fake.location_on_land(coords_only=False) # 返回地球上某个位置的经纬度
# ('42.50729', '1.53414', 'les Escaldes', 'AD', 'Europe/Andorra')
人物
fake.first_name() # 名字
# '强'
fake.first_name_female() # 名字(女)
# '桂荣'
fake.first_name_male() # 名字(男)
# '志强'
fake.first_romanized_name() # 名字(罗马文)
# 'Chao'
fake.last_name() # 姓
# '宋'
fake.last_name_female() # 姓(女)
# '陆'
fake.last_name_male() # 姓(男)
# '曾'
fake.last_romanized_name() # 姓(罗马文)
# 'Xie'
fake.name() # 姓名
# '王凯'
电话
fake.msisdn() # 完整手机号码(加了国家和国内区号)
# '9067936325890'
fake.phone_number() # 手机号
# '18520149907'
fake.phonenumber_prefix() # 区号
# 145
档案
fake.profile(fields=None, sex=None) # 档案(完整)
# { 'address': '河南省昆明市清河哈尔滨路H座 496152',
# 'birthdate': datetime.date(2014, 11, 20),
# 'blood_group': 'AB+',
# 'company': '易动力信息有限公司',
# 'current_location': (Decimal('77.504143'), Decimal('-167.365806')),
# 'job': '培训策划',
# 'mail': 'liangyang@yahoo.com',
# 'name': '杨磊',
# 'residence': '澳门特别行政区台北县西夏兴城街L座 803680',
# 'sex': 'F',
# 'ssn': '140722200004166520',
# 'username': 'lei65',
# 'website': [ 'http://www.29.cn/',
# 'http://www.lei.cn/',
# 'http://lishao.net/',
# 'https://www.feng.net/']}
fake.simple_profile(sex=None) # 档案(简单)
# { 'address': '广西壮族自治区南宁市花溪孙街c座 653694',
# 'birthdate': datetime.date(1993, 12, 16),
# 'mail': 'haomin@yahoo.com',
# 'name': '任秀英',
# 'sex': 'F',
# 'username': 'iding'}
身份证
fake.ssn(min_age=18, max_age=90) # 身份证
# '410622198603154708'
觉得有用、或微信搜索 查看更多编程小技巧
祝各位早日达到 装x如风、常伴吾身的境界 !
网友评论