ssa

Форк
0
/
Load.go 
94 строки · 2.4 Кб
1
package gomathtests
2

3
import (
4
	"bufio"
5
	"fmt"
6
	"os"
7
	"strconv"
8
	"strings"
9
)
10

11
// Загрузить данные из файла
12
func LoadSlice(FilePathName string) (data []float64, Err error) {
13
	// Если грузим в txt
14
	if strings.Contains(FilePathName, ".txt") {
15
		file, ErrOpen := os.Open(FilePathName)
16
		if ErrOpen != nil {
17
			return nil, fmt.Errorf("os.Open: %v", ErrOpen)
18
		}
19
		defer file.Close()
20
		scanner := bufio.NewScanner(file)
21
		for scanner.Scan() {
22
			fl, ErrParseFloat := strconv.ParseFloat(scanner.Text(), 64)
23
			if ErrParseFloat != nil {
24
				return nil, fmt.Errorf("strconv.ParseFloat: %v", ErrParseFloat)
25
			}
26
			data = append(data, fl)
27
		}
28
		if Err = scanner.Err(); Err != nil {
29
			return nil, fmt.Errorf("scanner.Err(): %v", Err)
30
		}
31
	}
32

33
	// // Если грузим в xlsx
34
	// if strings.Contains(FilePathName, ".xlsx") {
35

36
	// }
37
	return data, Err
38
}
39

40
// Загрузить RGB сигонал
41
func LoadRGB(FileName string) (R, G, B []float64, Err error) {
42
	file, ErrOpen := os.Open(FileName)
43
	if ErrOpen != nil {
44
		return nil, nil, nil, fmt.Errorf("os.Open: %v", ErrOpen)
45
	}
46
	defer file.Close()
47
	scanner := bufio.NewScanner(file)
48
	// optionally, resize scanner's capacity for lines over 64K, see next example
49
	for scanner.Scan() {
50
		str := scanner.Text()
51
		strs := strings.Split(str, ";")
52
		if len(strs) == 3 {
53
			strs[0] = strings.ReplaceAll(strs[0], ",", ".")
54
			strs[1] = strings.ReplaceAll(strs[1], ",", ".")
55
			strs[2] = strings.ReplaceAll(strs[2], ",", ".")
56

57
			r, _ := strconv.ParseFloat(strs[0], 64)
58
			g, _ := strconv.ParseFloat(strs[1], 64)
59
			b, _ := strconv.ParseFloat(strs[2], 64)
60

61
			R = append(R, r)
62
			G = append(G, g)
63
			B = append(B, b)
64
		}
65
	}
66
	if ErrScanner := scanner.Err(); ErrScanner != nil {
67
		return nil, nil, nil, fmt.Errorf("scanner.Err: %v", ErrScanner)
68
	}
69
	return R, G, B, nil
70
}
71

72
func Save(FileName string, opts ...[]float64) error {
73
	filePW, ErrOpenFile := os.Create(FileName)
74
	if ErrOpenFile != nil {
75
		panic(ErrOpenFile)
76
	}
77
	defer filePW.Close()
78

79
	// var content string
80
	for _, slice := range opts {
81
		// fmt.Println(slice)
82
		for i := range slice {
83
			strs := make([]string, len(opts))
84
			for j := range opts {
85
				strs[j] = fmt.Sprintf("%.8f", opts[j][i])
86
			}
87
			// fmt.Println()
88
			if _, ErrWriteString := filePW.WriteString(strings.Join(strs, ";") + "\n"); ErrWriteString != nil {
89
				return fmt.Errorf("filePW.WriteString: %v", ErrWriteString)
90
			}
91
		}
92
	}
93
	return nil
94
}
95

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.