0 前言
学习了一定的python语言基础后,我们开始学习一些Python标准库中的常用模块。本次介绍OS模块。OS模块主要用于程序与操作系统之间的交互。 OS模块使得我们能用相同的代码与不同的操作系统交互。因为OS模块帮我们透明化了不同操作系统的差异。比如我们可使用os.path中的方法对操作系统进行路径操作,不用担心window、linux、mac操作系统路径语法的差异。 os.path这个对象其实是根据不同操作系统导入了不同的路径操作模块(ntpath.py、posixpath.py)
这段os.py中的源码展示了如何根据不同的操作系统,执行 improt ntpath as path
还是import posixpath as path
,这样对我们来说,不管是linux还是window,我们只要使用path就可以了。os模块正是通过这种方式统一了接口。
这篇文章先来讲解os模块中os.path的使用。 —
1 os.path
os.path模块对路径操作实现一些有用的功能。
1.1 导入os模块
os.path是通过os模块来导入的。像之前解释的,os.path本质上是ntpath或者posixpath模块,只不过os模块中帮我们导入了ntpath或者posixpath模块。
在代码中输入下面的代码导入模块:
1 |
|
此外,为了方便演示,我在我的project文件中先创建了一些文件路径:
我用来演示的py文件名为os_test.py。
创建了文件路径后,我们在代码中定义一个字符串变量path
来表示这个路径
1 |
|
1.2 常用函数介绍
接下来介绍os.path中常用的函数。想全面的了解,最好的办法还是阅读源码和官方文档。
源码:可以在pychram中打开源码查看
官方文档:https://docs.python.org/3/library/os.path.html
一些翻译成中文的文档:
- https://yiyibooks.cn/xx/python_352/index.html;
- https://www.rddoc.com/doc/Python/3.6.0/zh/library/os.path/
exists(path)
exists函数判断path是否存在。返回bool类型。
1 |
|
运行结果:
1 |
|
abspath(path)
abspath函数返回一个标准的path路径的绝对路径。
1 |
|
运行结果:
1 |
|
split(path)
split函数将path拆分成dirname和basename,返回二元元组
1 |
|
运行结果:
1 |
|
dirname(path)
dirname函数返回path的目录名。实际上是通过将path参数传递个 split()函数得到的返回值的第一个元素.
1 |
|
运行结果:
1 |
|
basename(path)
返回路径名path的最后一级的名称。它为将path参数传递给split()函数返回的元组对的第二个元素。请注意,这个函数的结果不同于Unix的basename程序;对于’/foo/bar/’,Unix的basename返回’bar’,而basename()函数返回空字符串(’‘)。
1 |
|
运行结果:
1 |
|
getsize(path)
返回path的大小,以字节为单位。如果文件不存在或无法访问,则引发OSError。
1 |
|
运行结果:
1 |
|
getatime(path),getctime(path),getmtime(path)
getatime, getctime, getmtime三个函数分别返回文件的最后访问、创建、修改时间,path无效则抛出OSError
可以使用time.gmtime()来以struct_time形式输出最近修改时间(不过要额外导入time模块import time
)
1 |
|
运行结果:
1 |
|
isabs,isfile,isdir,islink,ismount
isabs,isfile,isdir,islink,ismount函数分别判断path是否为绝对路径,常规文件,文件夹,链接,挂载点
1 |
|
运行结果:
1 |
|
commonpath(paths)、commonprefix(list)
commonpath返回paths参数序列中,所有路径序列中共有的最长的路径.如果 paths 即包含绝对路径又包含相对路径,或者 paths 为空将抛出ValueError.不同于 commonprefix()函数, commonpath()返回一个有效的路径.
commonprefix返回列表中所有路径的前缀的最长路径前缀(逐个字符)。如果列表为空,则返回空字符串(’‘)。此函数可能返回无效路径,因为它一次处理一个字符。要获取有效路径,请参阅commonpath()。
1 |
|
运行结果:
1 |
|
2 其他
下一篇文章将会介绍os模块的其他功能,比如:新建、删除、重命名、查询文件或文件夹 还有调用系统命令等