原文链接 http://ironxu.com/766

本文介绍Go 标准库: path, filepath 常用导出函数,结构体及方法

1. path 包

import "path"

path实现了对斜杠分隔的路径进行操作的函数。

  • func IsAbs(path string) bool // 判断是否是一个绝对路径
  • func Split(path string) (dir, file string) // 将路径分割为路径和文件名
  • func Join(elem ...string) string // 将多个字符串合并为一个路径
  • func Ext(path string) string // 返回路径中扩展部分
  • func Base(path string) string // 返回路径的最后一个元素
  • func Dir(path string) string // 返回路径中目录部分
  • func Clean(path string) string // 返回同目录的最短路径
  • func Match(pattern, name string) (matched bool, err error) // 正则是否匹配路径(shell 文件名匹配)

$GOPATH/src/github.com/ironxu/go_note/library/path/path.go 代码如下:

// go 标准库 path
package mainimport ("fmt""path"
)func main() {pt := "~/gocode/src/go_note/package/path"// 判断是否是一个绝对路径is_abs := path.IsAbs(pt)fmt.Println(is_abs) // false// 将路径分割为路径和文件名pf := "~gocode/src/go_note/package/path/path.go"dir, file := path.Split(pf)fmt.Println(dir, file) // ~gocode/src/go_note/package/path/ path.go// 将多个字符串合并为一个路径dir_join := path.Join("usr", "local", "bin")fmt.Println(dir_join) // usr/local/bin// 返回路径中扩展file_ext := path.Ext(pf)fmt.Println(file_ext) // .go// 返回路径的最后一个元素dir_base := path.Base(pf)fmt.Println(dir_base) // path.go// 返回路径中目录部分dir = path.Dir(pf)fmt.Println(dir) // ~gocode/src/go_note/package/path// 返回同目录的最短路径dir_a := "/usr/../etc/../etc/ssh"fmt.Println(path.Clean(dir_a)) // /etc/ssh// 正则是否匹配路径is_match, err := path.Match("*.xml", "a.xml")fmt.Println(is_match, err) // true <nil>
}

2. path/filepath 包

import "path/filepath"

filepath 包实现了兼容各操作系统的文件路径操作函数。

  • filepath.Separator // 预定义变量,表示路径分隔符 /
  • filepath.ListSeparator // 预定义变量,表示环境变量分隔符 :
  • func Abs(path string) (string, error) // 返回path 相对当前路径的绝对路径
  • func Clean(path string) string // 返回path 的最短路径
  • func Rel(basepath, targpath string) (string, error) // 返回targpath 相对 basepath路径
  • func EvalSymlinks(path string) (string, error) // 返回软链指向的路径
  • func VolumeName(path string) string // 返回路径最前面的卷名
  • func ToSlash(path string) string // 路径分隔符替换为 /
  • func FromSlash(path string) string // / 替换为路径分隔符
  • func SplitList(path string) []string // 分隔环境变量里面的路径
  • func Walk(root string, walkFn WalkFunc) error // 遍历 root 目录下的文件树,并调用 walkFn

$GOPATH/src/github.com/ironxu/go_note/library/path/filepath.go 代码如下:

// go 标准库 path/filepath
package mainimport ("fmt""os""path/filepath"
)// 打印路径名称
func pathName(path string, info os.FileInfo, err error) error {if err != nil {return err} else {fmt.Println(path)}return nil
}func main() {// 预定义变量fmt.Println(string(filepath.Separator), string(filepath.ListSeparator))// 返回path 相对当前路径的绝对路径dir := "~/gocode/src/go_note/package/filepath"real_dir, err := filepath.Abs(dir)fmt.Println(real_dir, err)// 返回path 的最短路径dir = "/usr/../etc/../tmp"clear_dir := filepath.Clean(dir)fmt.Println(clear_dir) // /tmp// 返回targpath 相对 basepath路径basepath, targpath := "/usr/local", "/usr/local/go/bin"rel_dir, err := filepath.Rel(basepath, targpath)fmt.Println(rel_dir, err) // go/bin <nil>// 返回软链指向的路径symlink := "/usr/local"real_dir, err = filepath.EvalSymlinks(symlink)fmt.Println(real_dir, err) // /usr/local <nil>// 返回路径最前面的卷名root := "/usr/local/go"vol := filepath.VolumeName(root)fmt.Println(vol) // ''// 路径分隔符替换为 `/`slash_dir := filepath.ToSlash(root)fmt.Println(slash_dir) // /usr/local/go//  `/` 替换为路径分隔符from_slash := filepath.FromSlash(slash_dir)fmt.Println(from_slash) // /usr/local/go// 分隔环境变量里面的路径env_path := "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/go/bin"env_slice := filepath.SplitList(env_path)for k, v := range env_slice {fmt.Println(k, v)}// 0 /usr/local/bin// 1 /usr/bin// 2 /bin// 3 /usr/sbin// 4 /sbin// 5 /opt/X11/bin// 6 /usr/local/go/bin// 遍历 root 目录下的文件树,并调用 walkFnroot_dir, err := os.Getwd()err = filepath.Walk(root_dir, pathName)fmt.Println(err)
}

参考

  • pkg/path 中文
  • pkg/path_filepath 中文
  • pkg/path
  • pkg/filepath

Go 标准库: path相关推荐

  1. Python标准库03 路径与文件 (os.path包, glob包)

    摘要:Python标准库 文件系统 os.path glob.glob os.path包 os.path包主要是处理路径字符串,比如说'/home/vamei/doc/file.txt',提取出有用信 ...

  2. python标准库os.path中_Python零基础入门学习19:常用标准库之os.path子库

    注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为3~5分钟. os库是Python标准库,包含几百个函数.它能处理与系统相关的常用路径操作.进程管理.环境参数等 ...

  3. Python 标准库 —— os 路径(os.path)

    <a href="http://blog.csdn.net/lanchunhui/article/details/50193327", target="_blank ...

  4. python标准库os.path中用来_Python标准库os.path中用来判断指定文件是否存在的方法是_____________。...

    Python标准库os.path中用来判断指定文件是否存在的方法是_____________. 答:exists() 通常,我们称脾为( ? ?) 答:后天之本 智慧职教: 生物与非生物的主要区别在于 ...

  5. python标准库模块路径_Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单...

    而到了Python3时代后,Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单.甚至可以说pathlib已经可以完全替代os.path,它完全采用面向对象的编程方式,因为P ...

  6. Python 标准库之 xml.etree.ElementTree xml解析

    Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...

  7. meetup_如何使用标准库和Node.js构建Meetup Slack机器人

    meetup by Janeth Ledezma 简妮丝·莱德兹玛(Janeth Ledezma) 如何使用标准库和Node.js构建Meetup Slack机器人 (How to build a M ...

  8. Python标准库介绍

    1. 关于Python标准库 众所周知,Python是一个依赖强大的组件库完成对应功能的语言,为了便捷实现各项功能,前辈大牛们打造了多种多样的工具库公开提供给大众使用,而越来越多的库已经因为使用的广泛 ...

  9. golang标准库http服务器处理流程

    http标准库 golang本身就提供了http的标志库,在golang中可以轻松的编写http服务,本文主要是因为在编写http服务的过程中,对整个处理流程不是很了解故想了解一下. 示例代码 pac ...

最新文章

  1. VUE 事件获取当前组件的属性
  2. 系列笔记 | 深度学习连载(4):优化技巧(上)
  3. 一个人到底申请几张信用卡最合适?
  4. linux docker导入镜像,Docker镜像的导入和导出
  5. openshift for linux
  6. 前端学习(2524):自定义指令(钩子函数)
  7. c语言求闰年平年的计算方法,C语言平年闰年问题
  8. linux中用shell脚本对tomcat和nginx做日志切割
  9. 大学计算机基础流媒体,大学计算机基础经典课件.ppt
  10. python字体描边_使用 python 将文泉驿字体导出为 fnt 格式的bitmap font
  11. 视频动作识别调研(Action Recognition)
  12. linux 系统gbk字符集,linux 修改字符集gbk
  13. zyb的面试 字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛
  14. 如何设置用计算机程序打开方式,WPS安装后怎么设置为文档的默认打开方式的方法...
  15. 蔡颖-《APS走向实践》书解读之四:供应链、系统模型、APS软件
  16. Android 一体机研发之修改系统设置————声音
  17. 百度飞浆之PaddleHub视频移动人脸识别
  18. Apache DolphinScheduler 诞生记
  19. 简单易学的推箱子源代码大放送
  20. 【英语六级】【仔细阅读】(2)

热门文章

  1. 高通qcc芯片天梯图_芯片性能天梯榜“爆冷”,骁龙888无法撼动麒麟9000的王位...
  2. js室内地图开发_GIS开发_OpenLayers
  3. OpenGL:画个水壶
  4. Docker创建一个镜像
  5. NumPy Matplotlib PIP安装
  6. python爬虫基础扫盲之HTTP以及HTTPS
  7. kafka通过控制台模拟消息发送和消息接收正常,但是通过javaAPI操作生产者发送消息不成功 消费者接收不到数据解决方案?
  8. java 几种类_Java 中有几种类型的流?
  9. mui 图片预览(自定义)功能 - 案例篇
  10. win10 查看文件扩展名 - 教程篇