gpt4 book ai didi

file-io - 创建用于测试文件访问的大型 csv 文件

转载 作者:IT王子 更新时间:2023-10-29 01:24:55 25 4
gpt4 key购买 nike

我想创建一个 10 GB 的文件,如下所示:

prefix:username:timestamp, number

举个例子:

login:jbill:2013/3/25, 1

我想创建一个 10GB 的文件,方法是像上面那样创建随机行。

我如何在 Go 中执行此操作?

我可以有一个前缀数组,例如:

login, logout, register

还有一组用户名:

jbill, dkennedy

最佳答案

例如,

package main

import (
"bufio"
"fmt"
"math/rand"
"os"
"strconv"
"time"
)

func main() {
fileSize := int64(10e9) // 10GB
f, err := os.Create("/tmp/largefile")
if err != nil {
fmt.Println(err)
return
}
w := bufio.NewWriter(f)
prefixes := []string{"login", "logout", "register"}
names := []string{"jbill", "dkennedy"}
timeStart := time.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC)
timeDur := timeStart.AddDate(1, 0, 0).Sub(timeStart)
rand.Seed(time.Now().UnixNano())
size := int64(0)
for size < fileSize {
// prefix:username:timestamp, number
// login:jbill:2012/3/25, 1
prefix := prefixes[int(rand.Int31n(int32(len(prefixes))))]
name := names[int(rand.Int31n(int32(len(names))))]
time := timeStart.Add(time.Duration(rand.Int63n(int64(timeDur)))).Format("2006/1/2")
number := strconv.Itoa(int(rand.Int31n(100) + 1))
line := prefix + ":" + name + ":" + time + ", " + number + "\n"
n, err := w.WriteString(line)
if err != nil {
fmt.Println(n, err)
return
}
size += int64(len(line))
}
err = w.Flush()
if err != nil {
fmt.Println(err)
return
}
err = f.Close()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Size:", size)
}

输出:

register:jbill:2012/8/24, 15
login:jbill:2012/10/7, 98
register:dkennedy:2012/8/29, 70
register:jbill:2012/6/1, 89
register:jbill:2012/5/24, 63
login:dkennedy:2012/3/29, 48
logout:jbill:2012/7/8, 93
logout:dkennedy:2012/1/12, 74
login:jbill:2012/4/12, 14
login:jbill:2012/2/5, 83

关于file-io - 创建用于测试文件访问的大型 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com