Мне нужно прочитать файл CSV и записать расположение строк с определенными значениями в массив, а затем вернуться назад и получить эти строки в произвольном порядке и с хорошей производительностью, поэтому произвольный доступ.
Моя программа использует csv.NewReader (файл), но я не вижу способа получить или установить смещение файла, которое она использует. Я попытался file.Seek (0, io.SeekCurrent), чтобы вернуть позицию файла, но он не меняется между вызовами reader.Read (). Я также попытался fmt.Println ("+ v + v \ n", читатель, файл), чтобы увидеть, хранит ли что-нибудь положение файла читателя, но я этого не вижу. Я также не знаю, как лучше всего использовать положение файла, если я его найду.
Вот что мне нужно сделать:
file,_ = os.Open("stuff.csv")
reader = csv.NewReader(file)
//read file and record locations
for {
line,_ = reader.Read()
if wantToRememberLocation(line) {
locations = append(locations, getLocation()) //need this function
}
}
//then revisit certain lines
for {
reader.GoToLine(locations[random]) //need this function
line,_ = reader.Read()
doStuff(line)
}
Есть ли способ сделать это с помощью библиотеки csv, или мне придется написать свою собственную, используя более примитивные функции ввода-вывода файлов?