美文网首页
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语言学习小计

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