MCPcopy Create free account
hub / github.com/cogentcore/core / Read

Method Read

tensor/cmd/ttail/file.go:61–104  ·  view source on GitHub ↗

Read reads data from file

()

Source from the content-addressed store, hash-verified

59
60// Read reads data from file
61func (fl *File) Read() error {
62 st, err := os.Stat(fl.FName)
63 if err != nil {
64 return err
65 }
66 fl.ModTime = st.ModTime()
67 f, err := os.Open(fl.FName)
68 if err != nil {
69 return err
70 }
71 defer f.Close()
72
73 if fl.Data != nil {
74 fl.Data = fl.Data[:0]
75 }
76
77 scan := bufio.NewScanner(f)
78 ln := 0
79 for scan.Scan() {
80 s := string(scan.Bytes())
81 var fd []string
82 if fl.Commas {
83 fd = strings.Split(s, ",")
84 } else {
85 fd = strings.Split(s, "\t")
86 }
87 if ln == 0 {
88 if len(fd) == 0 || strings.Count(s, ",") > strings.Count(s, "\t") {
89 fl.Commas = true
90 fd = strings.Split(s, ",")
91 }
92 fl.Heads = fd
93 fl.Widths = make([]int, len(fl.Heads))
94 fl.FitWidths(fd)
95 ln++
96 continue
97 }
98 fl.Data = append(fl.Data, fd)
99 fl.FitWidths(fd)
100 ln++
101 }
102 fl.Rows = ln - 1 // skip header
103 return err
104}
105
106// FitWidths expands widths given current set of fields
107func (fl *File) FitWidths(fd []string) {

Callers 1

OpenMethod · 0.95

Calls 8

ScanMethod · 0.95
FitWidthsMethod · 0.95
ModTimeMethod · 0.80
SplitMethod · 0.80
OpenMethod · 0.65
CloseMethod · 0.65
StatMethod · 0.45
BytesMethod · 0.45

Tested by

no test coverage detected