Метод csv.Reader.ReadAll
Метод csv.Reader.ReadAll читает все оставшиеся записи из CSV-потока
и возвращает их в виде среза типа [][]string. При вызове метода
он читает данные до конца файла или до первой встреченной ошибки.
Если чтение прошло успешно, метод возвращает все записи и nil в качестве ошибки.
В случае возникновения ошибки возвращается частично прочитанные данные и сама ошибка.
Синтаксис
records, err := reader.ReadAll()
Пример
Давайте прочитаем простой CSV-файл с тремя записями:
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
data := `name,age,city
John,30,New York
Jane,25,Boston`
reader := csv.NewReader(strings.NewReader(data))
records, err := reader.ReadAll()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(records)
}
Результат выполнения кода:
[[name age city] [John 30 New York] [Jane 25 Boston]]
Пример
Теперь прочитаем CSV-файл с разделителем-точкой с запятой и с комментариями:
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
data := `id;product;price
# comment line
1;laptop;1200
2;mouse;25`
reader := csv.NewReader(strings.NewReader(data))
reader.Comma = ';'
reader.Comment = '#'
records, err := reader.ReadAll()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(records)
}
Результат выполнения кода:
[[id product price] [1 laptop 1200] [2 mouse 25]]
Пример
Рассмотрим случай, когда в CSV-файле встречается ошибка (неправильное количество полей):
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
data := `name,age,city
John,30,New York
Jane,Boston`
reader := csv.NewReader(strings.NewReader(data))
reader.FieldsPerRecord = 3
records, err := reader.ReadAll()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(records)
}
Результат выполнения кода:
"Error: record on line 3: wrong number of fields"
Смотрите также
-
метод
csv.Reader.Read,
который читает одну запись из CSV-файла -
тип
csv.Reader,
который используется для чтения CSV-данных -
метод
csv.Writer.WriteAll,
который записывает все записи в CSV-формат -
функцию
csv.NewReader,
которая создает новый экземпляр для чтения CSV