Go语言学习小计

2023-05-01  本文已影响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\ # 照片路径

一些想法:

上一篇下一篇

猜你喜欢

热点阅读