faker 伪造数据生成库

faker 伪造数据生成库

前言

javafaker,这是一个用于生成假数据的 Java 库,与 Python 的 faker 库类似。javafaker 库提供了很多方法,用于生成各种类型的随机数据,

基本用法

api介绍

 <!--java faker用于生成随机数据-->
        <dependency>
            <groupId>com.github.javafaker</groupId>
            <artifactId>javafaker</artifactId>
            <version>1.0.2</version>
        </dependency>

我们常用语种

Locale.CHINA //简体中文
Locale.ENGLISH //en
Locale.FRENCH //法语
Locale.GERMAN //德语
Locale.ITALIAN //意大利语
Locale.JAPANESE //日语

常用随机值

姓名、地址、电子邮件、电话号码、商业数据、日期、颜色等

展示代码

 Faker faker = new Faker();

            // 生成名字
            String firstName = faker.name().firstName();
            String lastName = faker.name().lastName();
            String fullName = faker.name().fullName();

            // 生成地址
            String streetName = faker.address().streetName();
            String city = faker.address().city();
            String zipCode = faker.address().zipCode();

            // 生成电子邮件
            String email = faker.internet().emailAddress();

            // 生成电话号码
            String phoneNumber = faker.phoneNumber().phoneNumber();

            // 生成商业数据
            String companyName = faker.company().name();
            String bs = faker.company().bs();

            // 生成日期
            String pastDate = faker.date().past(5, TimeUnit.HOURS).toLocaleString(); // 5小时前的日期
            String futureDate = faker.date().future(1, TimeUnit.HOURS).toLocaleString(); // 1 小时后的日期

            // 生成颜色
            String hexColor = faker.color().hex();

            // 生成随机数和布尔值
            int randomInt = faker.number().randomDigit();
            boolean randomBoolean = faker.bool().bool();

            // 打印结果
            System.out.println("First Name: " + firstName);
            System.out.println("Last Name: " + lastName);
            System.out.println("Full Name: " + fullName);
            System.out.println("Street Name: " + streetName);
            System.out.println("City: " + city);
            System.out.println("Zip Code: " + zipCode);
            System.out.println("Email: " + email);
            System.out.println("Phone Number: " + phoneNumber);
            System.out.println("Company Name: " + companyName);
            System.out.println("Company BS: " + bs);
            System.out.println("Past Date: " + pastDate);
            System.out.println("Future Date: " + futureDate);
            System.out.println("Hex Color: " + hexColor);
            System.out.println("Random Int: " + randomInt);
            System.out.println("Random Boolean: " + randomBoolean);

假设有一个用户实体类

package com.jerry.rpccore.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;

/**
 * @version 1.0
 * @Author jerryLau
 * @Date 2024/4/12 16:41
 * @注释
 */
@Data
@Builder
@AllArgsConstructor
@ToString
public class User {
    private int id;

    private String name;
    private int age;
    private String address;
    private String phone;


}

随机生成后,保存至数据库或者存在csv文件

package com.jerry.rpccore;

import com.github.javafaker.Faker;
import com.jerry.rpccore.model.User;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

/**
 * @version 1.0
 * @Author jerryLau
 * @Date 2024/4/11 16:38
 * @注释
 */
public class TestMain {
    public static void main(String[] args) {
        List<User> users = new ArrayList<>();


        Faker instance = Faker.instance(Locale.CHINA);

        for (int i = 0; i < 10; i++) {
            User build = User.builder()
                    .id(i).name(instance.name().fullName())
                    .age(instance.number().randomDigitNotZero())
                    .address(instance.address().city() + instance.address().streetName() + instance.address().streetAddress())
                    .phone(instance.phoneNumber().cellPhone())
                    .build();
            System.out.println(build);

            //插入数据库
            //....
            userservice.save(build);
            users.add(build);
        }
        //写入文件
        saveUsersToFile(users);
    }

    /***
     * 写入csv文件
     * @param users
     */
    private static void saveUsersToFile(List<User> users) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("users.csv"))) {
            writer.write("ID,Name,Phone,Age,Address\n");
            for (User user : users) {
                writer.write(String.format("%d,%s,%s,%d,%s\n",
                        user.getId(),
                        user.getName(),
                        user.getPhone(),
                        user.getAge(),
                        user.getAddress()));
            }
            writer.flush();
            System.out.println("Users saved to file successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

可以看到存入文件成功
在这里插入图片描述

注意:只适合生成一些测试数据,各位道友按需进行🤪🤪🤪

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,可以使用Python的Faker来批量生成车机数据Faker是一个Python,可以用于生成各种假数据,比如姓名、地址、电子邮件、电话号码等。在生成车机数据时,我们可以使用Faker生成车辆信息、传感器数据等。 下面是一个示例代码,演示如何使用Faker生成车辆信息和传感器数据: ```python from faker import Faker import random import datetime fake = Faker() class Vehicle: def __init__(self): self.make = fake.vehicle_make() self.model = fake.vehicle_model() self.year = fake.vehicle_year() self.fuel_type = fake.vehicle_fuel_type() self.fuel_capacity = random.uniform(30, 80) class SensorData: def __init__(self, vehicle, timestamp): self.vehicle = vehicle self.speed = random.randint(0, 120) self.rpm = random.randint(1000, 6000) self.fuel_level = random.uniform(0, vehicle.fuel_capacity) self.timestamp = timestamp def generate_sensor_data(num_samples): sensor_data = [] for i in range(num_samples): vehicle = Vehicle() timestamp = datetime.datetime.now() - datetime.timedelta(minutes=i) data = SensorData(vehicle, timestamp) sensor_data.append(data) return sensor_data def save_data_to_csv(sensor_data): with open('sensor_data.csv', 'w') as f: f.write('make,model,year,fuel_type,fuel_capacity,speed,rpm,fuel_level,timestamp\n') for data in sensor_data: f.write(f'{data.vehicle.make},{data.vehicle.model},{data.vehicle.year},{data.vehicle.fuel_type},{data.vehicle.fuel_capacity},{data.speed},{data.rpm},{data.fuel_level},{data.timestamp}\n') sensor_data = generate_sensor_data(1000) # 生成1000条传感器数据 save_data_to_csv(sensor_data) # 将数据保存到CSV文件 ``` 在这个示例代码中,我们使用了Faker生成车辆信息,比如制造商、车型、年份、燃料类型等。同时,我们也使用了Faker生成传感器数据中的时间戳。最后,我们将生成数据保存到CSV文件中。需要注意的是,使用Faker生成数据可能不是完全真实的,但是可以用于模拟一些场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值