python秒级内批量测试数据生成脚本,桌面输出/csv/json文件输出

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
"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值