python之模擬數據Faker


  Faker,它解決的問題是python模擬(隨機)數據!不知道大家在工作中沒有用到過假數據,特別前后端開發的人員,應該經常用到,前端人員頁面展示,效果展示。后端人員數據庫數據模擬。今天給大家介紹的這個項目完美的解決了這個方案,可以模擬多種語言的數據,中文,英文,日語,韓語等等。有興趣的小伙伴可以下載嘗試一下。


安裝:
pip install Faker

 

基本用法

使用faker.Faker()初始化,可通過訪問你想要的數據類型來命名的屬性生成你要的數據。

from faker import Faker
fake = Faker()

fake.name()
# 'Lucy Cechtelar'

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

fake.text()
# 'Sint velit eveniet. Rerum atque repellat voluptatem quia rerum. Numquam excepturi
#  beatae sint laudantium consequatur. Magni occaecati itaque sint et sit tempore. Nesciunt
#  amet quidem. Iusto deleniti cum autem ad quia aperiam.
#  A consectetur quos aliquam. In iste aliquid et aut similique suscipit. Consequatur qui
#  quaerat iste minus hic expedita. Consequuntur error magni et laboriosam. Aut aspernatur
#  voluptatem sit aliquam. Dolores voluptatum est.
#  Aut molestias et maxime. Fugit autem facilis quos vero. Eius quibusdam possimus est.
#  Ea quaerat et quisquam. Deleniti sunt quam. Adipisci consequatur id in occaecati.
#  Et sint et. Ut ducimus quod nemo ab voluptatum.'
每次對方法的調用都會fake.name()產生不同的(隨機)結果。這是因為造假者將faker.Generator.method_name()呼叫轉發給faker.Generator.format(method_name)。

from faker import Faker
fake = Faker("zh-CN")

fake.name()
# '張柳'

fake.address()
# '黑龍江省遼陽縣江北李路C座 461467'

fake.text()
# '繼續瀏覽音樂行業國內什么.任何同時專業但是人民而且無法.認為大家的是更新.
數據設備日本更多.生活發表一般最大一下.狀態得到游戲今天喜歡.
專業無法工作這么文化如此感覺教育.工程全部詳細注意.現在增加女人一些日本覺得不過.
感覺原因全部感覺表示.質量所以管理但是因此.圖片都是一種注冊表示主要汽車影響.
質量喜歡有關希望更多.已經那個更多決定運行.
系列名稱完全研究女人沒有企業.'

可以自定義不同的語言,也可以輸出多種語言,這里我們就展示中英文,有興趣的可以去查看官方文檔

生成IP地址

from faker import Faker
from faker.providers import internet

fake = Faker()
fake.add_provider(internet)

print(fake.ipv4_private())
# '192.168.91.234'

隨機生成IP地址,每次產生不同的(隨機)結果。

命令行用法

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 ...]]

Where:

  • faker: is the script when installed in your environment, in development you could use python -m faker instead
  • -h, --help: 顯示幫助文檔
  • --version: 顯示版本信息
  • -o FILENAME: 將輸出重定向到指定的文件名中。
  • -l {bg_BG,cs_CZ,...,zh_CN,zh_TW}: 允許自定義語言,一種或多種語言。
  • -r REPEAT: 指定輸出的數量
  • -s SEP: 每次生成輸出后,會生成指定的字符
  • -i {my.custom_provider other.custom_provider} list of additional custom providers to use. Note that is the import path of the package containing your Provider class, not the custom Provider class itself.
  • fake: 用於生成輸出(例如名稱、地址或文本)的偽名稱
  • [fake argument ...]: 傳遞給fake的可選參數

$ 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;

 

自定義數據

如果不想使用默認數據,可以提供自己的單詞集。

fake = 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.'

fake.sentence(ext_word_list=my_word_list)
# 'Oat beans oat Lollipop bar cheesecake.'

 

常用方法:
from faker import Faker
from faker.providers import internet

fake = Faker("zh-CN")

# 產生隨機手機號
print(fake.phone_number())
# 產生隨機姓名
print(fake.name())
# 產生隨機地址
print(fake.address())
# 隨機產生國家名
print(fake.country())
# 隨機產生國家代碼
print(fake.country_code())
# 隨機產生城市名
print(fake.city_name())
# 隨機產生城市
print(fake.city())
# 隨機產生省份
print(fake.province())
# 產生隨機email
print(fake.email())
# 產生隨機IPV4地址
print(fake.ipv4())
# 產生長度在最大值與最小值之間的隨機字符串
print(fake.pystr(min_chars=0, max_chars=8))

# 隨機產生車牌號
print(fake.license_plate())

# 隨機產生顏色
print(fake.rgb_color())  # rgb
print(fake.safe_hex_color())  # 16進制
print(fake.color_name())  # 顏色名字
print(fake.hex_color()) # 16進制

# 隨機產生公司名
print(fake.company())

# 隨機產生工作崗位
print(fake.job())
# 隨機生成密碼
print(fake.password(length=10, special_chars=True, digits=True, upper_case=True, lower_case=True))
# 隨機生成uuid
print(fake.uuid4())
# 隨機生成sha1
print(fake.sha1(raw_output=False))
# 隨機生成md5
print(fake.md5(raw_output=False))

# 隨機生成女性名字
print(fake.name_female())
# 男性名字
print(fake.name_male())
# 隨機生成名字
print(fake.name())

# 生成基本信息
print(fake.profile(fields=None, sex=None))
print(fake.simple_profile(sex=None))

# 隨機生成瀏覽器頭user_agent
print(fake.user_agent())

# 隨機產生時間 月份
print(fake.month_name())
# 'May'
print(fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None))
# 2005-10-08 08:32:02
print(fake.time_object(end_datetime=None))
# 06:45:11
print(fake.date_time_between(start_date="-10y", end_date="now", tzinfo=None))
# 2012-08-25 03:07:38
print(fake.future_date(end_date="+30d", tzinfo=None))
# 2020-04-25
print(fake.date_time(tzinfo=None, end_datetime=None))
# 2002-09-01 18:27:45
print(fake.date(pattern="%Y-%m-%d", end_datetime=None))
# '1998-08-02'
print(fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None))
# 2020-04-03 16:03:21
print(fake.timezone())
# 'Africa/Addis_Ababa'
print(fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None))
# 2020-01-09 01:15:08
print(fake.month())
# '04'
print(fake.day_of_week())
# 'Sunday'
print(fake.iso8601(tzinfo=None, end_datetime=None))
# '1988-02-28T09:22:29'
print(fake.date_object(end_datetime=None))
# 2017-06-26
print(fake.date_this_decade(before_today=True, after_today=False))
# 2020-03-30
fake.date_this_century(before_today=True, after_today=False)
# datetime.date(2000, 6, 1)
fake.date_this_month(before_today=True, after_today=False)
# datetime.date(2018, 6, 13)
fake.am_pm()
# 'AM'
fake.past_datetime(start_date="-30d", tzinfo=None)
# datetime.datetime(2018, 6, 25, 7, 41, 34)
fake.date_this_year(before_today=True, after_today=False)
# datetime.date(2018, 2, 24)
fake.date_time_between_dates(datetime_start=None, datetime_end=None, tzinfo=None)
# datetime.datetime(2018, 6, 26, 14, 40, 5)
fake.date_time_ad(tzinfo=None, end_datetime=None)
# datetime.datetime(673, 1, 28, 18, 17, 55)
fake.date_between_dates(date_start=None, date_end=None)
# datetime.date(2018, 6, 26)
fake.future_datetime(end_date="+30d", tzinfo=None)
# datetime.datetime(2018, 7, 4, 10, 53, 6)
fake.century()
# 'IX'
fake.past_date(start_date="-30d", tzinfo=None)
# datetime.date(2018, 5, 30)
fake.time(pattern="%H:%M:%S", end_datetime=None)
# '01:32:14'
fake.day_of_month()
# '19'
fake.unix_time(end_datetime=None, start_datetime=None)

fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2018, 5, 24, 11, 25, 25)
fake.date_between(start_date="-30y", end_date="today")
# datetime.date(2003, 1, 11)
fake.year()
# '1993'
fake.time_series(start_date="-30d", end_date="now", precision=None, distrib=None, tzinfo=None)
# <generator object time_series at 0x7f44e702a620>

# 隨機產生文件
fake.file_extension(category=None)
# 'xls'
print(fake.file_name(category=None, extension=None))
# 那么.mov
fake.file_path(depth=1, category=None, extension=None)
# '/教育/客戶.js'
fake.unix_device(prefix=None)
# '/dev/sdf'
print(fake.unix_partition(prefix=None))
# '/dev/vdv4'
print(fake.mime_type(category=None))
# 'message/imdn+xml'

開源地址: https://github.com/joke2k/fakerv
項目文檔:https://faker.readthedocs.io/en/master/

 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM