Go+ 目录教程(4.18)
Posted Data-Mining
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go+ 目录教程(4.18)相关的知识,希望对你有一定的参考价值。
目录
Go+ 概述
Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。
正文
Go+ 提供很多处理目录的方法,今天我们就来了解一下这方面的一些内容。
导入包
Go+ 在操作目录时,一般会使用的工具库是 os 和 path/filepath 包,导入方式如下:
import (
"os"
"path/filepath"
)
os.Mkdir
os.Mkdir 方法可以用来创建子目录,示例代码如下:
import (
"os"
)
func check(e error)
if e != nil
panic(e)
println("执行成功")
err := os.Mkdir("subdir", 0755)
check(err)
执行结果:
执行成功
但是,os.Mkdir 只能创建当前目录的子目录,不能直接创建子目录的子目录,示例代码如下:
import (
"os"
)
func check(e error)
if e != nil
panic(e)
err := os.Mkdir("subdir1/subdir2", 0755)
check(err)
执行结果:
panic: mkdir subdir1/subdir2: no such file or directory goroutine 1 [running]: main.check(...) /tmp/sandbox849975208/main.gop:7 main.main() /tmp/sandbox849975208/main.gop:12 +0x77
那我们是不是只能一级一级创建子目录呢?不是的,我们可以看下面的方法。
os.MkdirAll
os.MkdirAll 方法可以创建多级子目录,当然也支持创建当前目录的子目录,示例代码如下:
import (
"os"
)
func check(e error)
if e != nil
panic(e)
println("执行成功")
err := os.MkdirAll("subdir", 0755)
check(err)
err = os.MkdirAll("subdir1/subdir2", 0755)
check(err)
执行结果:
执行成功 执行成功
os.RemoveAll
os.RemoveAll 方法用来删除目录,如果删除的目录包含子目录,也会一起删除,示例代码如下:
import (
"os"
)
func check(e error)
if e != nil
panic(e)
println("执行成功")
err := os.MkdirAll("subdir", 0755)
check(err)
err = os.MkdirAll("subdir1/subdir2", 0755)
check(err)
err = os.RemoveAll("subdir")
check(err)
err = os.RemoveAll("subdir1/subdir2")
check(err)
执行结果:
执行成功 执行成功 执行成功 执行成功
os.ReadDir
os.ReadDir 方法用来查看目录下的内容,返回值是 os.DirEntry 类型的对象切片,示例代码如下:
import (
"os"
)
func check(e error)
if e != nil
panic(e)
println("执行成功")
createEmptyFile := func(name string)
d := []byte("")
check(os.WriteFile(name, d, 0644))
err := os.MkdirAll("subdir/parent/child", 0755)
check(err)
createEmptyFile("subdir/parent/file2")
createEmptyFile("subdir/parent/file3")
createEmptyFile("subdir/parent/child/file4")
c, err := os.ReadDir("subdir/parent")
check(err)
println("Listing subdir/parent")
for _, entry := range c
println(" ", entry.Name(), entry.IsDir())
执行结果:
执行成功 执行成功 执行成功 执行成功 执行成功 Listing subdir/parent child true file2 false file3 false
os.Chdir
os.Chdir 方法可以用来修改当前的工作目录,类似于 cd 命令,示例代码如下:
import (
"os"
)
func check(e error)
if e != nil
panic(e)
println("执行成功")
createEmptyFile := func(name string)
d := []byte("")
check(os.WriteFile(name, d, 0644))
err := os.MkdirAll("subdir/parent/child", 0755)
check(err)
createEmptyFile("subdir/parent/file2")
createEmptyFile("subdir/parent/file3")
createEmptyFile("subdir/parent/child/file4")
err = os.Chdir("subdir/parent/child")
check(err)
c, err := os.ReadDir(".")
check(err)
println("Listing subdir/parent/child")
for _, entry := range c
println(" ", entry.Name(), entry.IsDir())
执行结果:
执行成功 执行成功 执行成功 执行成功 执行成功 执行成功 Listing subdir/parent/child file4 false
filepath.Walk
filepath.Walk 方法可以递归地访问一个目录,包括它的所有子目录。Walk 接受回调函数来处理访问的每个文件或目录。示例代码如下:
import (
"os"
"path/filepath"
)
func visit(p string, info os.FileInfo, err error) error
if err != nil
return err
println(" ", p, info.IsDir())
return nil
createEmptyFile := func(name string)
d := []byte("")
os.WriteFile(name, d, 0644)
err := os.MkdirAll("subdir/parent/child", 0755)
if err != nil
panic(err)
createEmptyFile("subdir/parent/file2")
createEmptyFile("subdir/parent/file3")
createEmptyFile("subdir/parent/child/file4")
println("遍历 subdir 目录:")
err = filepath.Walk("subdir", visit)
执行结果:
遍历 subdir 目录: subdir true subdir/parent true subdir/parent/child true subdir/parent/child/file4 false subdir/parent/file2 false subdir/parent/file3 false
以上是关于Go+ 目录教程(4.18)的主要内容,如果未能解决你的问题,请参考以下文章
4.18 php相关配置,限制user_agent,禁止php解析
[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础
解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段