John
𝙲𝚊𝚝𝚒𝚘𝚗
Tony
Мне надо всего лишь узнать наличие папки или файла на диске (windows)
Делаю так:
func pathExists(path string) bool {
_, err := os.Stat(path)
if os.IsNotExist(err) {
return false
} else {
return true
}
}
Неужели нет какой-нибудь функции типа FileExists(<Path>) ?
Evgeny
знаю лайфхак как записать это в одну строчку )))
if os.IsNotExist(err) {
return false
} else {
return true
}
Tony
Tony
Что-то особого отличия не заметил
Tony
Еще не могу понять архивирование:
Tony
func zipit(source, target string) error {
logf("СТАРТ: Запаковка " + source + " в " + target)
//Это я так понимаю создается файл в памяти
zipfile, err := os.Create(target)
if err != nil {
return err
}
defer zipfile.Close()
//Это объект "класса" архиватора
archive := zip.NewWriter(zipfile)
defer archive.Close()
//Это проверка на наличие источника для запаковки
info, err := os.Stat(source)
if err != nil {
return nil
}
//Это проверка является ли объект источника папкой
var baseDir string
if info.IsDir() {
baseDir = filepath.Base(source)
}
//А ЧТО ТУТ ПРОИСХОДИТ - ВООБЩЕ непонятно
filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
if baseDir != "" {
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
}
if info.IsDir() {
header.Name += "/"
} else {
header.Method = zip.Deflate
}
writer, err := archive.CreateHeader(header)
if err != nil {
return err
}
if info.IsDir() {
return nil
}
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(writer, file)
return err
})
Tony
_, err = io.Copy(writer, file) - Это что-то типа содержимое файла копируется в writer?
Tony
непонятно, где задействуется анонимная ф-ция:
func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
ᅟ
func zipit(source, target string) error {
logf("СТАРТ: Запаковка " + source + " в " + target)
//Это я так понимаю создается файл в памяти
zipfile, err := os.Create(target)
if err != nil {
return err
}
defer zipfile.Close()
//Это объект "класса" архиватора
archive := zip.NewWriter(zipfile)
defer archive.Close()
//Это проверка на наличие источника для запаковки
info, err := os.Stat(source)
if err != nil {
return nil
}
//Это проверка является ли объект источника папкой
var baseDir string
if info.IsDir() {
baseDir = filepath.Base(source)
}
//А ЧТО ТУТ ПРОИСХОДИТ - ВООБЩЕ непонятно
filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
if baseDir != "" {
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
}
if info.IsDir() {
header.Name += "/"
} else {
header.Method = zip.Deflate
}
writer, err := archive.CreateHeader(header)
if err != nil {
return err
}
if info.IsDir() {
return nil
}
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(writer, file)
return err
})
pastebin.org
Tony
И почему
if info.IsDir() {
return nil
}
Т.е., если папка выйти? А как тогда запаковка папки происходит? А она происходит :)
ᅟ
😕 форматирование исходников?
У тебя большая портянка кода, и в формате сообщений ТГ это тяжело читать, а если сделаешь пасту - это поможет быстрее решить твою проблему, плюс удобнее переключатся между чатом и кодом
Tony
Понял
ᅟ
Если у тебя портянка больше 15-20 строк, то лучше сделать пасту, так всем будет проще
ᅟ
Ну и если уж решил код кинуть сообщением, то оберни его в ‘
ᅟ
func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
И
func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
Tony
OK
Tony
https://pastebin.com/MpDL731b
Tony
😁 Вроде получилось
Tony
Короче, буду разбираться
Tony
Рекурсией?
Tony
понятно. спасибо )
Денис
Приветствую, посоветуйте наилучшую площадку курсов по Go, Java и т.п. с гарантией трудоустройства и хорошей программой обучения, и хорошими преподами
Yura
Добрый день господа, вопрос: есть ли какие-нибудь ресурсы/материалы по внутреннему устройству го? Чтобы чуть углубить знания
Yura
Побольше про то как устроен гк, планировщик
Денис
Так почему сложнее на Go устроиться?
Yura
Хорошо, спасибочки
Dmitry
На джаве банально есть куча легаси куда можно залететь за опытом и которое как-то надо поддерживать
Dmitry
Сложные проекты можно писать на чем угодно и пишут их так же на чем-угодно, если оно эффективно решает задачу)
Dmitry
И сложную бизнес логику я бы лучше на джавке-котлине писал tbh
Dmitry
хотя опять же, кому что
Null
Всем привет
Есть слайс типа интерфес внутри которого лежат json-ы
вот один из них
{"4194":"by-dev-jenkins","4197":16384,"4198":"vm-1002","4199":"POWERED_ON","4200":4}
Как разобрать его без использования структуры
и получить на выходе значения ??
аля кей-велью
4194 by-dev-jenkins
4197 16384
4198 vm-1002
4199 POWERED_ON
4200 4
Буду благодарен за помощь)
Null
счас попробую)
Andrey
только там string string надо
Andrey
хотя твое не сработает, сюда по его примеру, там и числа, и строки))
Andrey
ну, будем молится что ноги себе парень не прострелит)
Andrey
Null
в общем все сложно с выбором языка было
Andrey
но ты же должен понимать, что выбирают язык под задачу, а не задачу под язык)
Null
Null
Приходит лид говорит Надо интеграция одной херни с другой
говорит получаешь json с данными от 1го сервиса аля Заббикс
парсишь его так чтобы он отправлялся по курлу в CMDB
где надо ID поля и значение
Задача упала джуну Сис.Админу который знает тока баш
и не оценил питон
и приисполненный пошел изучать GO пока пилит
Да админ это я)
Null
𝙲𝚊𝚝𝚒𝚘𝚗
𝙲𝚊𝚝𝚒𝚘𝚗
𝙲𝚊𝚝𝚒𝚘𝚗
Null
Прошу не шеймить за переменные это все Временно)
как и говно код выше)
Null
Null
все гуд)
это уже взлетело)
Null
тоесть работает
Null
Null
спасибо))
Null
Могу скинуть код , но готовьтесь что там ад,кровь, кишки и череп, череп.
Alexey
первый язык?
Alexey
а какой(ие) до этого?
Дмитрий
На вкус и цвет
Дмитрий
Мне го больше нрав
𝙲𝚊𝚝𝚒𝚘𝚗
не понял, а что с синтаксисом не так?
Grigorij
ты уже разработчиком работаешь?
Grigorij
вообще
Grigorij
ок, ну да я имел ввиду что опыт есть. чет раст сурово, не? че не джаву какую нидь?
Herman
а что за компания, если не секрет?
Nikhil
- I am running Truncate function on an os.File:
err = currentLogFile.Truncate(0)
if err != nil {
return err
}
-------------------------------------------------------------------------
- But it returns error along the lines of:
truncate C:\\Users\\jenkins.minikube8\\minikube-integration\\.minikube\\logs\\audit.json: Access is denied."
--------------------------------------------------------------------------
The currentLogFile was made like:
var currentLogFile *os.File
f, err := os.OpenFile(lp, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
currentLogFile := f
---------------------------------------------------------------------------
Help needed in understanding why is this happening and how can we deal with it?
Михаил
Nikhil
do you use error check for "f, err :="?
I check error for:
err = currentLogFile.Truncate(0)
if err != nil {
return err
}
----------------------------------------------------------------
Actually I am trying to overwrite the content of currentLogFile or f, so for that I am doing this. If this is not a good way, is there any other way to overwrite the content inside of an os.File.
Aziz
func (p *parser) *parser что означает ?
Михаил
Михаил
Tony
Подскажите, как запустить отладку в VS Code с параметрами к программе?
как-будто я выполнил go run main.go "param1"
Vladislav