python 标准库原理与用法详解之os.path篇


Posted in Python onOctober 24, 2021

os中的path

查看源码会看到,在os.py中有这样几行

if 'posix' in _names:
    name = 'posix'
    linesep = '\n'
    from posix import *
    #省略若干代码

elif 'nt' in _names:
    from nt import *
    try:
        from nt import _exit
        __all__.append('_exit')
    except ImportError:
        pass
    import ntpath as path
    #。。。

由于我们是在windows(WindowsNT)中,所以打开ntpath.py文件,可以看到开头就定义了8个成员变量

curdir = '.'    #当前路径标识
pardir = '..'   #
extsep = '.'    #扩展名分隔符
sep = '\\'
pathsep = ';'   #环境变量中路径的分隔符
altsep = '/'    #
defpath = '.;C:\\bin'   #环境变量的存放位置
devnull = 'nul'

此外,还有一个名为supports_unicode_filenames的布尔型成员变量,表示当前系统是否支持unicode的文件名。

可以理解为,path中封装了一些和操作系统相关,并且在不同操作系统下代码不同的功能,下面默认from os.path import *

输入为路径字符串的单参函数

  输出
normpath() 将路径修改为\\a\\b形式
normcase() 将路径修改为小写的\\a\\b形式
abspath() 返回绝对路径,其格式为X:\\a\\b
realpath() 返回绝对路径,并消除其中的链接
relpath() 返回相对路径,并消除其中的链接
split() 将输入路径分割为两个部分
例如X:\\a\\b会返回为X:\\ab
splitext() 分割文件的扩展名
splidrive() 分割出驱动器和其他路径
basename() 最下层的目录或文件名称,即split()[1]
dirname() 最下层目录或文件所在目录,即split()[0]
exists() 判断输入路径是否存在,存在则返回True,否则False
lexists() 如果路径损坏,也返回False
isabs() 判断输入路径是否为绝对路径
isfile() 判断输入路径是否为文件
isdir() 判断输入路径是否为目录
islink() 判断输入路径是否为链接
ismount() 判断输入路径是否为挂载点(在windows中就是盘符)
例如os.path.ismount('C:\\'),返回为True
expanduser() 通过~对路径进行扩展
expandvars() 将路径扩展为命令行识别的变量

部分示例

>>> from os.path import *
>>> p = abspath('.')
>>> p
'E:\\Documents\\00\\1022'
>>> exists(p)
True
>>> splitdrive(p)
('E:', '\\Documents\\00\\1022')
>>> isfile(p)
False

与文件信息相关的单参函数

其输入必须为文件路径,不得为目录

 

输出~.getsize()以字节为单位获取文件大小~.getctime()获取文件创建时间,c即create~.getmtime()获取文件最后修改时间,m即modify~.getatime()获取文件最后访问时间,a即access

  输出
~.getsize() 以字节为单位获取文件大小
~.getctime() 获取文件创建时间,c即create
~.getmtime() 获取文件最后修改时间,m即modify
~.getatime() 获取文件最后访问时间,a即access

输入为多个参数的函数

os.path.join,用于拼接路径,超甜的一个功能。很多新手会为新建文件夹而困扰,很多时候不知道是写D:\test还是D:\test\,而在os.path.join中这两者基本是等价的。

>>> os.path.join('test','\\test1','test2\\','test3')
'\\test1\\test2\\test3'
  判断是否相同
~.samefile(p1, p2) 判断目录或文件是否相同
~.sameopenfile(fp1, fp2) 两个打开的文件是否指向同一个文件

commonpath(list)commonprefix(list):返回list中所有path共有的最长路径,即距离所有文件和文件夹的共同父文件夹。二者区别在于,后者会在返回的路径加上\

到此这篇关于python 标准库原理与用法详解之os.path篇的文章就介绍到这了,更多相关python os.path内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python的Tornado框架实现一个简单的WebQQ机器人
Apr 24 Python
在Python中操作字符串之startswith()方法的使用
May 20 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
python将一组数分成每3个一组的实例
Nov 14 Python
flask-restful使用总结
Dec 04 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
pytorch逐元素比较tensor大小实例
Jan 03 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
Python如何读写字节数据
Aug 05 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
Python干货实战之八音符酱小游戏全过程详解
关于python pygame游戏进行声音添加的技巧
Oct 24 #Python
python实现简单石头剪刀布游戏
Python 数据结构之十大经典排序算法一文通关
Python 的 sum() Pythonic 的求和方法详细
Oct 16 #Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
You might like
队列在编程中的实际应用(php)
2010/09/04 PHP
PHP数组实例总结与说明
2011/08/23 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP多线程类及用法实例
2014/12/03 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
解释&&和||在javascript中的另类用法
2014/07/28 Javascript
jquery实现动态画圆
2014/12/04 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
js实现分割上传大文件
2016/03/09 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
vue eslint简要配置教程详解
2019/07/26 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
Python第三方库的安装方法总结
2016/06/06 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
实现向右循环移位
2014/07/31 面试题
毕业生在校学习的自我评价分享
2013/10/08 职场文书
团队精神的演讲稿
2014/05/14 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书