原文链接:http://www.juzicode.com/python-example-faker-create-data
本文的几个例子用faker生成数据并用openpyxl生成表格,或者生成csv、xml、图像文件。
A)生成个人数据
#juzicode.com/VX公众号:juzicode
from openpyxl import Workbook
from faker import Faker
from tqdm import tqdm
N = 500 # 生成数据条数
# 初始化
fake = Faker('zh_CN')
wb = Workbook()
ws = wb.active
# 添加表头
p = fake.profile()
print(p.keys())
ws.append(list(p.keys()))
# 生成个人数据
for i in tqdm(range(N)): # 添加N行数据
p=fake.profile()
p['current_location'] = str(p['current_location']) # excel不识别的数据类型转换为字符串
p['website'] = str(p['website'])
ws.append(list(p.values())) # 添加数据
# 保存表格
wb.save('faker-profile-openpyxl.xlsx')
B)生成internet数据
#juzicode.com/VX公众号:juzicode
from openpyxl import Workbook
from faker import Faker
from tqdm import tqdm
N = 500 # 生成数据条数
# 初始化
fake = Faker('zh_CN')
wb = Workbook()
ws = wb.active
# 添加表头
ws.append(('name','email','domain','ipv4','ipv6','mac_address','url','port_number','','','','','',))
# 生成个人数据
for i in tqdm(range(N)): # 添加N行数据
name = fake.name()
email=fake.ascii_email()
domain=fake.domain_name()
ipv4=fake.ipv4()
ipv6=fake.ipv6()
mac_address=fake.mac_address()
url=fake.url()
port_number=fake.port_number()
ws.append((name,email,domain,ipv4,ipv6,mac_address,url,port_number,)) # 添加数据
# 保存表格
wb.save('faker-internet-openpyxl.xlsx')
C)生成财务数据
#juzicode.com/VX公众号:juzicode
from openpyxl import Workbook
from faker import Faker
from tqdm import tqdm
N = 500 # 生成数据条数
# 初始化
fake = Faker('zh_CN')
wb = Workbook()
ws = wb.active
# 添加表头
ws.append(('name','currency_code','currency_name','currency_symbol','credit_card_number','credit_card_provider','credit_card_security_code','phone_number','','','','','','',))
# 生成个人数据
for i in tqdm(range(N)): # 添加N行数据
name=fake.name()
currency_code,currency_name = fake.currency()
currency_symbol=fake.currency_symbol()
credit_card_number=fake.credit_card_number()
credit_card_provider=fake.credit_card_provider()
credit_card_security_code=fake.credit_card_security_code()
phone_number=fake.phone_number()
ws.append((name,currency_code,currency_name,currency_symbol,credit_card_number,
credit_card_provider,credit_card_security_code,phone_number,)) # 添加数据
# 保存表格
wb.save('faker-fanance-openpyxl.xlsx')
D)生成csv文件
#juzicode.com/VX公众号:juzicode
from faker import Faker
from tqdm import tqdm
import os
N = 50 # 生成数据条数
# 初始化
fake = Faker('zh_CN')
dir = 'faker-csv\\' # 如果目录为空,创建
if not os.path.exists(dir):
os.makedirs(dir)
# 生成数据和写入文件
for i in tqdm(range(N)): # 生成n个文件
x = fake.csv(header=('Name', 'Address', 'Favorite Color'),
data_columns=('{{name}}', '{{address}}', '{{safe_color_name}}'),
num_rows=100,
include_row_ids=True)
with open(dir+'%05d.csv'%i,'w') as pf: # 写入文件
pf.writelines(x.split('\r')) # 字符串带\r\n,直接按照字符串写入会导致空行
E)生成xml文件
#juzicode.com/VX公众号:juzicode
from faker import Faker
from tqdm import tqdm
import os
N = 50 # 生成数据条数
# 初始化
fake = Faker()
dir = 'faker-xml\\'
if not os.path.exists(dir): # 如果目录为空,创建
os.makedirs(dir)
# 生成数据,写入文件
for i in tqdm(range(N)): # 添加N行数据
x = fake.xml()
print(x)
with open(dir+'%05d.xml'%i,'w') as pf: # 写入文件
pf.write(x) #
F)生成图像文件
#juzicode.com/VX公众号:juzicode
from faker import Faker
from tqdm import tqdm
import os
N = 50 # 生成数据条数
# 初始化
fake = Faker()
dir = 'faker-image\\'
if not os.path.exists(dir): # 如果目录为空,创建
os.makedirs(dir)
# 生成数据,写入文件
for i in tqdm(range(N)): # 添加N行数据
x = fake.image(size=(512,256),image_format='png')
with open(dir+'%05d.png'%i,'wb') as pf: # 写入文件
pf.write(x) #
扩展阅读: