Python基础学习:os. path模块

os.path——公共路径名操作

资源代码:Lib/posixpath.py(针对POSIX系统)、Lib/ntpath.py(针对Windiws NT系统)、Lib/macpath.py(针对Macintosh系统)。

    该模块实现了许多针对路径名操作的函数。读写文件请参考参数open(),使用文件系统请参考os模块。路径参数可以是字符串数据,也可以是字节数据。我们鼓励使用Unicode编码下的字符串命名应用的文件名。不幸的是,一些文件的名称无法在Unix环境下以字符串的形式表示出来,因此需要在Unix环境下实现任意文件名的应用应当采取字节量作为路径名。反之亦然,使用字节对象没法在Windows(在标准mbcs编码下)表示所有文件名。因此,Windows应用应当使用字符串对象访问所有文件。

    不同于Unix shell(命令解析器,或称之为壳),Python不作任何自动的路径扩展。当应用需要类似于壳的路径扩展时,函数expanduser()与expandvars()可以被显式调用。(glob模块中也有描述)

此外:pathlib模块提供高级路径对象。

注意:这些函数只接收字节对象或字符串对象中的一种作为参数。如果有路径或文件名返回,其结果与参数数据为同一类型。

注意:不同的操作系统有不同的路径命名习惯,因此在标准库中该模块有多个版本。os.path模块总是能适应Python所运行的操作系统,且可以被本地路径所用。然而,如果你想要混合多种不同的路径格式,你可以导入使用独立的模块。以下的库有着相同的接口:

posixpath针对UNIX类系统路径

ntpath针对Windows NT

macpath针对老师MacOS路径

os. path.abspath(path)

扫描二维码关注公众号,回复: 1870958 查看本文章

    将路径名path归一化后,生成绝对路径后,返回绝对路径。在大多数平台,等价于使用函数normapth()执行以下操作:normpath(join(os.getcwd(),path))

os. path. basename(path)

    返回路径名path的基名。返回的元素为将path传递给函数split()后返回的一对参数中的第二个。请注意,该函数的结果异于Unix中的basename程序。对于basename程序来说,传递’/foo/bar/’会返回’bar’;但是对于basename()函数来说,会返回空字符串(’’)。

os. path. commonpath(paths)

    返回序列paths中所有路径名中共同包含的最长的子路径。如果paths同时包含绝对路径和相对路径,或者其为空,就会抛出ValueError。不同于commomprefix(),该函数返回有效路径。

os. path. commonprefix(list)

    返回最长的路径前缀(一个字符一个字符的对比),该前缀需要list内的所有路径共有。如果list为空,返回空字符串('’)。

注意:该函数可能会返回不可用路径,因为它是字符匹配。若要获取有效地址,参见commonpath()。

>>>os.path.commonprefix(['/usr/lib', '/usr/local/lib'])

'/usr/l'

 

>>>os.path.commonpath(['/usr/lib', '/usr/local/lib'])

'/usr'

os. path. dirname(path)

    返回路径名path的字典名。它返回的是函数split()分隔path后形成的两个元素中的第一个。

os. path. exists(path)

    如果path引用了一个存在的路径或者打开文件装饰器,该函数返回True。当path引用了一个已经损坏的符号链接,返回False。在一些平台下,该函数可能会在其未授权的文件上操作或是path指向物理存在时返回False。

os. path. lexists(past)

    如果path引用了一个存在的路径,返回True。但是,如果其为一个已经损坏的符号链接,也会返回True。该函数等价于在不含有os. lstat()的平台上函数exists()。

os. path. expanduser(path)

    在Unix和Windows平台下,返回一个参数,该参数中的初始部件~或~user被用户的主(home)目录代替。

    在Unix下,一个原始的~会在其建立时被环境变量HOME取代。否则,当前用户的主(home)目录将会被在密码字典中使用内建的模块pwd搜索。原始的~user也会被在密码目录中查询。

    在WIndowos下,HOME和USERPROFILE如果被建立,就会被使用。否则,HOMEPATH和HOMEDRIVE将被联合使用。原始的~user通过从先前创建的用户路径驱动中剥去最新的目录组件后被操作。

    如果展开失败或者路径为从斜杠开始,则路径不变。

os. path. expandvars(path)

    返回一个带有环境变量扩展名的参数。来自于$name或¥{name}的子字符串将会被环境变量的name(名)所取代。不正确的变量名和对不存在的标量进行操作时,不会产生结果。

    在Windowos下,%name%也被支持,与$name和${name}相同。

os. path. getime(path)

    返回最后一次调用该路径path的时间。返回的值为代表秒值的数字,起始点为历元起始点(参见time模块)。如果文件不存在或者不可访问,抛出OSError错误。

    如果os. stat_float_times()返回了True,那么结果是一个浮点数。

os. path. getctime(path)

    返回系统的ctime。在一些系统(比如Unix)当中,ctime是元数据最新的修改时间;在另一些系统(比如Windows)中,其为path的创建时间。返回的值为数字,代表着从历元开始值至当前时的秒值数据。如果文件不存在或者不可访问,抛出OSError。

os. path. getsize(path)

    返回path以字节计的大小。如果文件不存在或者不可访问,抛出OSError。

os. path. isabs(path)

    如果path是一个绝对路径名,返回True。在Unix下,这意味着路径以斜杠开头,在Windows中意味着以一个潜在的驱动符号开始。

os. path. isfile(path)

    如果path为一存在的常规文件,返回True。其为符号链接,因此对于同一路径,islink()和isfile()都可以为真。

os. path. isdir(path)

    如果path为一存在的目录,返回True。其为符号链接,对于同一路径,islink()和isdir()可以同时为真。

os. path. islink(path)

    如果path引用了一个存在的目录的条目的符号链接,返回True。如果符号链接不被Python运行时支持,那么总是会返回False。

os. path. ismount(path)

    如果路径名path是一个挂载点(文件系统中的一个点,其中安装了不同的文件系统),返回True。在POSIX下,该函数检查路径的父路径、path/..是否在超出path不同的驱动上、或者path/..和path是否在相同的驱动上指向相同的i节点,它应当检测Unix和POSIX变体上的所有挂载点。在Windows下,驱动根字符和共享的UNC总是挂载点,对于其它路径,如果异于输入路径,总是会抛出GetVolumePathName。

os. path. join(path, *paths)

    智能的联结一个或多个路径组件。返回值是path和*path中的任何元素共同联结的结果,除了其中的最后元素为空的那一项;若最后部分为空,只有一个目录分隔符(os. sep)跟在元素中。如果一个组件为绝对地址,先前的所有组件都会被抛出,新的联结从绝对地址组件开始。

    在Windows下,当一个绝对地址组件(如:r’/f00’)出现,驱动字符不会被重置。如果一个组件包含了驱动器字符,先前所有的组件都会被抛出并且驱动字符会被重置。注意:因为每一个驱动器都有一个当前目录,os. path. join(“c:”, “foo”)代表了一个与当前目录在驱动器C(c:foo)而不是C:\foo相关的路径。

os. path. normcase(path)

    规范路径名。在Unix和Mac OS X中,该函数返回不变的路径;在不区分大小写的文件路径上,它将路径转化为小写。在Windows中,该函数会将斜杠转化为反斜杠。如果path的类型不是str或bytes,将会抛出TypeError。

os. path. normpath(path)

    通过折叠冗余分隔符和上层引用规范路径名。因此,A//B、A/B/、A/./B以及A/foo/../B都会被换华为A/B。此字符串操作可以更改包含符号链接的路径的含义的操作。在Windows中,斜杠会被转化为反斜杠。为了规范实例,使用normcase()。

os. path. realpath(path)

    返回指定文件名的规范路径,消除出现在path中的任何符号链接(如果操作系统支持的话)。

os. path. relpath(path, start=os. curdir)

    返回path的相对路径,路径从当前目录开始或者从可选参数start指定的目录开始。该函数为路径计算函数:文件系统未经访问证实path或start的存在性与性质。

os. path. samefile(path1, path2)

    如果所有的文件名参数引用了相同的文件或路径,返回True。结果由驱动数和i节点数决定,并且在os. stat()调用了相同的文件名失败后,就会抛出例外。仅在Unix、Windows下可用。

os. path. sameopenfile(fp1, fp2)

    如果文件描述器fp1和fp2参考了相同文件,返回True。仅在Unix、Windows下可用。

os. path. samestat(stat1, stat2)

    如果统计元组stat1和stat2引用了相同的文件,返回True。该结构可能接受os.fatat()、os. lstat()或os. stat()的返回值。该函数运行时潜在使用了基于samefile()和sameopenfile()函数的比较。

os. path. split(path)

    将路径名path分割为两部分,即(head,tail);tail是路径名组件最后的部分,head是主导路径名的部分。tail不包含斜杠;如果path以斜杠结尾,tail将会为空。如果path中没有斜杠,head将会为空。如果path为空,head与tail都将为空。尾随斜杠会被conghead中剥离,除非其为根(仅有一个或多个斜杠)。在任意情况下,join(head, tail)函数会返回一个与本地path相同的路径名(但是在字符串下可能会有不同)。可以参考函数dirname()和basename()。

os. path. splitdrive(path)

    将路径名path分割为(drive,tail)两部分,drive为一装入点或者空字符串。在那些不适用驱动器的系统里,drive一般为空字符串。任意情况下,drive+tail等价于原path。

    在Windows下,将一个路径名为驱动/ UNC SharePoint和相对路径。

    如果路径包含驱动器字符,drive将会包含所有的一切,甚至于冒号。即:splitdrive(“c:/dir”)返回(“c:”,”/dir”)。

    如果路径包含UNC路径,drive将会包含主机名和共享名,指导但不包含第四层分离器。即splitdrive(“//nost/computer/dir”)返回(“//host/computer”, “/dir”)。

os. path. splitext(path)

    将路径名path分割为(root, ext),且root + ext == path,并且ext为空或者从一个周期开始且最多一个。基本名的引导周期会被湖绿。splitext(‘. cshrc’)返回('. cshrx’, ‘’)。

os. path. splitunc(path)

    将路径名path分割为(unc, rest),unc为UNC挂载点(例如r’\\host\mount’)。如果出现,并且rest为path的剩余部分(例如r’\path\file.ext’)。对于包含驱动器字符的路径,unc总是为空字符串。

os. path. supports_unicode_filenames

    如果字母编码字符串可以被用作文件名(包含文件系统是假的限制),返回True。

猜你喜欢

转载自blog.csdn.net/zhtysw/article/details/80753881
今日推荐