目录
os.path.relpath(path, start = os.curdir)
os.path.join(path1[, path2[, …]])
作为居民,我们每个人都有自己的 ID,记录我们的姓名,性别,出生日期,户籍地等信息,一定程度而言,这些信息就是我们的个人属性,获取这些属性就可以知悉我们的个人信息。作为存储在物理空间里的文件,自其诞生那一刻起,同样被赋予若干独特的属性,如文件名,扩展名,存放路径,创建和修改时间等,如何才能精准获取这些属性呢?
Python 标准库之 os 模块 提供了 os.path 这个功能强大的子模块,可以轻松获取文件的上述属性。当然,随着Python的迭代,该子模块渐有被 pathlib2 标准库取代之趋势。
os.path 子库以 path 为入口,用于操作和处理文件路径,其常用命令如下:
(为方便起见,本文以存放于文档的文件 test.py 为例,其完整路径为 /home/probobo/Documents/test.py。)
1、路径相关
os.path.abspath(path)
返回 path 在当前系统中的绝对路径。
>>> import os
>>> os.path.abspath('test.py')
'/home/probobo/test.py'
问题来了,您会发现所得并非所求,结果显示的并非文件 test.py 的绝对路径。这主要源于该命令显示的绝对路径实际为当前工作目录的绝对路径,也即 os.path.abspath() 结果取决于os.getcwd():
>>> os.getcwd()
'/home/probobo'
如果 test.py 为当前项目,则 os.path.abspath() 可完美显示其绝对路径:
>>> import os
>>> os.path.abspath('test.py')
'/home/probobo/Documents/test.py'
>>> os.getcwd()
'/home/probobo/Documents'
os.path.normpath(path)
归一化 path 的表示形式,期间所有冗余分隔符和up-level引用均折叠。Linux 系统统一用斜杠(/)分割路径,Windows系统则统一用双反斜杠(\\)。
>>> os.path.normpath('/home//probobo/./Documents/test.py')
'/home/probobo/Documents/test.py'
os.path.relpath(path, start = os.curdir)
返回 path 与当前工作目录之间的相对路径
import os
path = '/home/probobo/Documents/test.py'
relative_path = os.path.relpath(path)
print(relative_path)
start = '/home/probobo'
relative_path = os.path.relpath(path, start)
print(relative_path)
start = '/home'
relative_path = os.path.relpath(path, start)
print(relative_path)
start = path
relative_path = os.path.relpath(path, start)
print(relative_path)
start = '/home/probobo/Downloads/d/1.txt'
relative_path = os.path.relpath(path, start)
print(relative_path)
输出结果:
test.py
Documents/test.py
probobo/Documents/test.py
.
../../../Documents/test.py
>>>
os.path.dirname(path)
返回文件路径
>>> os.path.dirname('/home/probobo/Documents/test.py')
'/home/probobo/Documents'
os.path.basename(path)
返回文件名
>>> os.path.basename('/home/probobo/Documents/test.py')
'test.py'
os.path.split(path)
把路径分割成 dirname 和 basename,返回一个元组
>>> os.path.split('/home/probobo/Documents/test.py')
('/home/probobo/Documents', 'test.py')
os.path.join(path1[, path2[, …]])
把目录和文件名组合为一个路径
>>> os.path.join('/','home','probobo','Documents','test.py')
'/home/probobo/Documents/test.py'
2、时间相关
os.path.getatime(path)
返回 path 对应的文件或目录最近访问时间(浮点型秒数)
>>> os.path.getatime('/home/probobo/Documents')
1645434030.3635492
os.path.getmtime(path)
返回 path 对应的文件或目录最近修改时间
>>> os.path.getmtime('/home/probobo/Documents/test.py')
1645511698.5759156
os.path.getctime(path)
返回 path 对应的文件或目录创建时间
>>> os.path.getctime('/home/probobo/Documents/test.py')
1645511698.5759156
上述浮点时间均可以通过调用 time 库来输出标准时间。
>>> import time
>>> time.ctime(os.path.getctime('/home/probobo/Documents/test.py'))
'Tue Feb 22 14:34:58 2022'
3、判断相关
os.path.exists(path)
判断 path 对应的文件或目录是否存在,返回 True 或 False。
>>> os.path.exists('/home/probobo/Documents/test.py') #指定路径
True
>>> os.path.exists('test.py') #当前目录
False
os.path.isabs(path)
判断是否为绝对路径,返回 True 或 False。
>>> os.path.isabs('/home/probobo/Documents/test.py')
True
>>> os.path.isabs('test.py')
False
os.path.isfile(path)
判断 path 所对应的文件是否存在,返回 True 或 False。
>>> os.path.isfile('/home/probobo/Documents/test.py')
True
>>> os.path.isfile('test.py')
False
os.path.isdir(path)
判断 path 所对应的目录是否存在,返回 True 或 False。
>>> os.path.isdir('/home/probobo/Documents')
True
>>> os.path.isdir('Documents')
False
4、其他
os.path.getsize(path)
返回文件大小,若文件不存在则返回错误 FileNotFoundError: [Errno 2]
>>> os.path.getsize('/home/probobo/Documents/test.py')
480
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/106945.html