import argparse
import csv
import json
import time
from datetime import date, datetime
import re
from faker import Faker
def generate_data(num_records, output_format):
fake = Faker(locale="zh_CN")
data = []
n = 12500001 # 定义ID起始号
for _ in range(num_records):
"""这里可以自定义字段"""
profile = {
'id': n, # 主键
'xxx_name': re.sub(r'[^\w\w]','', str(fake.text(max_nb_chars=30))), # 随机生成字符串,并去掉符号
'xxx_address':fake.address(), # 地址,带邮编
'xxx_areacode': fake.random_int(8), # 区划
'start_time': fake.date_between(start_date=date(2015,1,1),end_date=date(2019,1,1)), # 取时间段内的随机日期
'xx_date': fake.date(), # 1900年后随机日期
'name':fake.name(), # 姓名
'fzjg': fake.company(), # 发证机关
'mz': fake.random_element(['x1','x2','x3','x4']), # 在列表中随机选择一个值
'xx_time': str(fake.date_time_between(start_date=datetime(2011, 12, 31, 23, 59, 59) ,end_date=datetime(2015, 1, 1, 11, 42, 52)))+'\t', # 在指定时间段内随机生成一个日期,包括年月日时分秒
'xxx_code': fake.random_int(8), # 随机8位数字组合
'province_name': fake.province(), # 省名称
'city_name': fake.city_name()+'市', # 城市名称
'street_name': fake.street_name(), # 街道名称
'coummtry_name': re.sub(r'[^\w\w]','', str(fake.text(5)))+'社区', # 社区名称
'xx_area':fake.pyfloat(left_digits=5,right_digits=2,positive=True) ,# 数据长度和小数位数
'xx': fake.random_int(1,1000), # 1-1000随机整数
'xx_phone':fake.random_element([fake.phone_number(),str('+' + str(fake.random_int(1000,9999)))+ ' '+ str(fake.random_number(8))]), # 电话
# 'xxx_time': str(fake.date_time_between(start_date=datetime(2022, 12, 31, 23, 59, 59) ,end_date=datetime(2024, 1, 1, 11, 42, 52)))+'\t', # 更新时间
'xx': fake.random_element(['1','0']), # 是否有效(1是,0否)
}
data.append(profile)
n = n + 1
if output_format == 'csv':
return write_to_csv(data)
elif output_format == 'json':
return write_to_json(data)
else:
return print_to_console(data)
def write_to_csv(data):
# 文件表头字段
fieldnames = ['id',...]
with open(r'文件保存位置路径', 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in data:
writer.writerow(row)
print("Data written to output.csv")
def write_to_json(data):
with open('output.json', 'w', encoding='utf-8') as jsonfile:
json.dump(data, jsonfile, ensure_ascii=False, indent=4)
print("Data written to output.json")
def print_to_console(data):
for profile in data:
print(profile)
print("Data printed to console")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Generate fake data with different output formats.')
parser.add_argument('--num_records', type=int, default=‘默认桌面输出条数,写整数’ help='Number of records to generate (default: 10)')
parser.add_argument('--output_format', choices=['csv', 'json', 'console'], default='console',
help='Output format (csv, json, console) (default: console)')
args = parser.parse_args()
generate_data(args.num_records, args.output_format)
"""
可以通过命令行运行此脚本,并指定要生成的记录数以及输出格式。例如:
生成 10 条记录并打印到控制台:python script.py
生成 50 条记录并保存到 CSV 文件:python test_data_1.py --num_records 2 --output_format csv
生成 100 条记录并保存到 JSON 文件:python test_data_1.py --num_records 100 --output_format json
"""
python秒级内批量测试数据生成脚本,桌面输出/csv/json文件输出
于 2024-06-19 09:16:00 首次发布