美文网首页
Go语言学习小计

Go语言学习小计

作者: 向暖而生 | 来源:发表于2023-05-01 21:29 被阅读0次

最近的一些日子,对Go语言比较感兴趣,然后就开始了学习。之所以对Go语言比较感兴趣,主要是发现工作的时候,常常需要我写一些脚本,而且需要跨平台,而且最好是开发简单、部署简单。然后,就发现Go语言其实是比较适合这个场景的。

今天在处理文件,想把照片上传到百度的“一刻相册”,但是呢,它每次限制上传一百,下载页限制到一百,如果这样的话,我直接本地多建几个目录,不就便于维护了嘛。
简单的想法就是把一个目录里的文件,按某个数量级,直接拷贝到一个新的目录里,然后编译成一个exe文件,配置到环境变量就好了。

这里简单的写了一下:

package main

// 1.根据文件数量,创建对应目录
// 2.遍历文件数组,拷贝文件到对应目录
import (
    "flag"
    "fmt"
    "io/ioutil"
    "os"
    "strings"
)

func main() {
    args := flag.Args()

    var targetDir string
    flag.StringVar(&targetDir, "dir", "", "文件路径")
    flag.Parse()

    if args == nil {
        fmt.Println("请输入正确参数!格式为: -dir 文件路径")
        return
    }
    fmt.Println("启动照片梳理脚本:")
    fmt.Println(targetDir)
    files, err := ioutil.ReadDir(targetDir)
    if err != nil {
        fmt.Printf("err: %v\n", err)
        return
    }
    fmt.Println("当前目录下文件数量:", len(files))
    fmt.Println("------------------------------------")

    if len(files) < 80 {
        fmt.Println("文件数量小于80,无需打包")
    } else {
        fmt.Println("检测到文件数量大于80,开始进行归档")
        fmt.Println("创建目录,收纳照片到对应文件,每个目录保存80张图片")
        dir_cnt := len(files)/80 + 1
        for j := 0; j < dir_cnt; j++ {
            pathName := targetDir + `\` + fmt.Sprintf("photo_%d", j)
            fmt.Printf("创建目录:%s", pathName)
            err = os.Mkdir(pathName, os.ModeDir)

            if err != nil {
                fmt.Println(err)
                return
            }
            fmt.Println("拷贝文件:")
            start := j * 80
            end := start + 80
            if end > len(files) {
                end = len(files)
            }
            temps := files[start:end]
            for _, j := range temps {

                fname := j.Name()
                if strings.HasSuffix(fname, "exe") {

                } else if strings.HasSuffix(fname, "JPG") || strings.HasSuffix(fname, "MP4") || strings.HasSuffix(fname, "png") || strings.HasSuffix(fname, "jpg") {
                    fmt.Println(fname)
                    os.Rename(targetDir+`\`+fname, pathName+`\`+fname)
                } else {
                    fmt.Println("异常格式,跳过!")
                }

            }

        }
    }
    fmt.Println("处理完成!")

}

编译处理后的Exe文件:

https://www.123pan.com/s/UlhZVv-RVSsH.html提取码:67YI

使用:

imgs.exe -dir D:\photo\202301\ # 照片路径

一些想法:

  • 写的脚本,不能坑人,刚开始写,忘记检测文件结尾了,嗯,万一弄错了,可能带来一些毁灭。
  • 异常处理,很多时候必须考虑,比如参数的检测,目录的检测,文件类型的检测等等。
  • 想更快的学习一门语言,还是需要一些练习,实际应用中,才能发现不足,提升能力。

相关文章

  • Go 语言学习技巧和编程思维

    Go 语言学习技巧和编程思维 一、了解 Go 语言 了解 Go 语言背景 学习 Go 语言,首先要了解 Go 语言...

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • 笨办法学golang(三)

    这是Go语言学习笔记第三篇。 Go语言学习笔记参考书籍「Go语言圣经」以及Go官方标准库 Go语言基本类型主要有布...

  • 第一篇:为什么要学习Go语言?

    学习书籍--许式伟、吕桂华等编著《Go语言编程》 目录 一、几种语言的理解 二、为什么要学习Go语言?(Go语言最...

  • 并发编程

    学习来源:Go语言实战、blibli 黑马程序员 20小时快速入门go语言(中) Go语言的优势 Go语言设计简单...

  • 笨办法学golang(二)

    这是Go语言学习笔记的第二篇文章。 Go语言学习笔记参考书籍「Go语言编程」、Go官方标准库 前文提要 上篇文章中...

  • 《深入学习Go语言》

    《深入学习Go语言》8月火热上市:当当,天猫,京东同步发售。 本书适合初次学习Go语言,以及对Go语言有初步了解的...

  • 笨办法学golang(四)

    这是Go语言学习笔记的第四篇 Go语言学习笔记参考书籍「Go语言圣经」以及Go官方标准库 数组 数组是指一系列同类...

  • Go语言入门到精通详解如何学习Go语言?

    如何学习Go语言?再回答这个问题之前,我们首先要想明白,自己为什么学习Go语言?在我看来,Go语言之所有越来越受到...

  • go 学习笔记

    最近开始学习go语言,记录下相关的东西 go语言学习资料汇总 go官网[https://golang.org/]g...

网友评论

      本文标题:Go语言学习小计

      本文链接:https://www.haomeiwen.com/subject/ultajdtx.html