前言
安裝
pip install Faker
使用
from faker import Faker
fake = Faker()
name = fake.name()
address = fake.address()
print(name)
print(address)
from faker import Faker
fake = Faker(locale='zh_CN')
name = fake.name()
address = fake.address()
print(name)
print(address)
語言代號:
- 簡體中文:zh_CN
- 繁體中文:zh_TW
- 美國英文:en_US
- 英國英文:en_GB
- 德文:de_DE
- 日文:ja_JP
- 韓文:ko_KR
- 法文:fr_FR
常用函數:
除了上述介紹的fake.name和fake.address生成姓名和地址兩個函數外,常用的faker函數按類別划分有如下一些常用方法。
1、地理信息類
- fake.city_suffix():市,縣
- fake.country():國家
- fake.country_code():國家編碼
- fake.district():區
- fake.geo_coordinate():地理坐標
- fake.latitude():地理坐標(緯度)
- fake.longitude():地理坐標(經度)
- fake.postcode():郵編
- fake.province():省份
- fake.address():詳細地址
- fake.street_address():街道地址
- fake.street_name():街道名
- fake.street_suffix():街、路
2、基礎信息類
- ssn():生成身份證號
- bs():隨機公司服務名
- company():隨機公司名(長)
- company_prefix():隨機公司名(短)
- company_suffix():公司性質
- credit_card_expire():隨機信用卡到期日
- credit_card_full():生成完整信用卡信息
- credit_card_number():信用卡號
- credit_card_provider():信用卡類型
- credit_card_security_code():信用卡安全碼
- job():隨機職位
- first_name_female():女性名
- first_name_male():男性名
- last_name_female():女姓
- last_name_male():男姓
- name():隨機生成全名
- name_female():男性全名
- name_male():女性全名
- phone_number():隨機生成手機號
- phonenumber_prefix():隨機生成手機號段
3、計算機基礎、Internet信息類
- ascii_company_email():隨機ASCII公司郵箱名
- ascii_email():隨機ASCII郵箱:
- company_email():
- email():
- safe_email():安全郵箱
4、網絡基礎信息類
- domain_name():生成域名
- domain_word():域詞(即,不包含后綴)
- ipv4():隨機IP4地址
- ipv6():隨機IP6地址
- mac_address():隨機MAC地址
- tld():網址域名后綴(.com,.net.cn,等等,不包括.)
- uri():隨機URI地址
- uri_extension():網址文件后綴
- uri_page():網址文件(不包含后綴)
- uri_path():網址文件路徑(不包含文件名)
- url():隨機URL地址
- user_name():隨機用戶名
- image_url():隨機URL地址
5、瀏覽器信息類
- chrome():隨機生成Chrome的瀏覽器user_agent信息
- firefox():隨機生成FireFox的瀏覽器user_agent信息
- internet_explorer():隨機生成IE的瀏覽器user_agent信息
- opera():隨機生成Opera的瀏覽器user_agent信息
- safari():隨機生成Safari的瀏覽器user_agent信息
- linux_platform_token():隨機Linux信息
- user_agent():隨機user_agent信息
6、數字類
- numerify():三位隨機數字
- random_digit():0~9隨機數
- random_digit_not_null():1~9的隨機數
- random_int():隨機數字,默認0~9999,可以通過設置min,max來設置
- random_number():隨機數字,參數digits設置生成的數字位數
- pyfloat():
- left_digits=5 #生成的整數位數, right_digits=2 #生成的小數位數, positive=True #是否只有正數
- pyint():隨機Int數字(參考random_int()參數)
- pydecimal():隨機Decimal數字(參考pyfloat參數)
7、文本、加密類
- pystr():隨機字符串
- random_element():隨機字母
- random_letter():隨機字母
- paragraph():隨機生成一個段落
- paragraphs():隨機生成多個段落
- sentence():隨機生成一句話
- sentences():隨機生成多句話,與段落類似
- text():隨機生成一篇文章
- word():隨機生成詞語
- words():隨機生成多個詞語,用法與段落,句子,類似
- binary():隨機生成二進制編碼
- boolean():True/False
- language_code():隨機生成兩位語言編碼
- locale():隨機生成語言/國際 信息
- md5():隨機生成MD5
- null_boolean():NULL/True/False
- password():隨機生成密碼,可選參數:length:密碼長度;special_chars:是否能使用特殊字符;digits:是否包含數字;upper_case:是否包含大寫字母;lower_case:是否包含小寫字母
- sha1():隨機SHA1
- sha256():隨機SHA256
- uuid4():隨機UUID
8、時間信息類
- date():隨機日期
- date_between():隨機生成指定范圍內日期,參數:start_date,end_date
- date_between_dates():隨機生成指定范圍內日期,用法同上
- date_object():隨機生產從1970-1-1到指定日期的隨機日期。
- date_time():隨機生成指定時間(1970年1月1日至今)
- date_time_ad():生成公元1年到現在的隨機時間
- date_time_between():用法同dates
- future_date():未來日期
- future_datetime():未來時間
- month():隨機月份
- month_name():隨機月份(英文)
- past_date():隨機生成已經過去的日期
- past_datetime():隨機生成已經過去的時間
- time():隨機24小時時間
- timedelta():隨機獲取時間差
- time_object():隨機24小時時間,time對象
- time_series():隨機TimeSeries對象
- timezone():隨機時區
- unix_time():隨機Unix時間
- year():隨機年份
9、python 相關方法
- profile():隨機生成檔案信息
- simple_profile():隨機生成簡單檔案信息
- pyiterable()
- pylist()
- pyset()
- pystruct()
- pytuple()
- pydict()
可以用dir(fake),看Faker庫都可以fake哪些數據,目前Faker支持近300種數據,此外還支持自己進行擴展。
有了這些生成數據函數之后用fake對象就可以調用不同的方法生成各種數據了。
示例
from faker import Faker
fake = Faker(locale='zh_CN')
for i in range(5):
print('姓名:',fake.name(),'手機號:',fake.phone_number())
生成數據文本
from faker import Faker
from datetime import datetime
init_time = datetime.now()
fake = Faker(locale='zh_CN')
with open(r'd:\test.txt','w+')as f:
for i in range(1000000):
name = fake.name()
phone = fake.phone_number()
test_number = '姓名: '+ name+' 手機號: '+ phone + '\n'
f.write(test_number)
now_time = datetime.now()
print("執行時間:"+str((now_time-init_time).seconds)+"秒")