Python os.path常用操作

转载 2016年08月29日 15:47:27

Python: os.path常用路径名操作

这个模块实现了操作路径名的常用的函数。读写文件参见open(),访问文件系统参见os模块。

注意

在Windows上,许多函数不能正确的支持UNC路径名。splitunc()ismount()可以正确的处理它们。

和Unix shell不一样,Python不做任何自动的路径扩展。当应用需要shell一样的路径扩展的功能,可以调用expanduser()expandvars()这样的函数来实现。(参见glob模块)。

注意

不同的操作系统有不同的路径命名惯例,所以在标准库中,这个模块有许多版本。os.path模块总是适用于Python正在运行的操作系统和本地路径。但是如果你想操作不同格式的路径,可以导入并使用独立的模块。它们有着相同的接口:

  • posixpath 用于UNIX风格的路径
  • ntpath 用于Windows路径
  • macpath 用于老式的MacOS路径
  • os2emxpath 用于OS/2 EMX路径
os.path.abspath(path)

返回路径名path的规范化的绝对路径。在大多数平台,这等同于这样normpath(join(os.getcwd(), path))调用normpath()函数。

出现于版本1.5.2。

os.path.basename(path)

返回路径名path的主文档名。path上调用split()函数,返回的二元组中的第二个元素就是主文档名。这和Unix的basename不同;对于'/foo/bar/'basename返回'bar',而basename()函数返回空字符串('')。

os.path.commonprefix(list)

返回list中所有路径的最长通用前缀(逐字符比较)。如果list为空,返回空字符串('')。因为是逐字符比较,所以可能会返回无效的路径。

os.path.dirname(path)

返回路径名path的目录名。path上调用函数split(),返回的二元组中的第一个元素就是目录名。

os.path.exists(path)

如果path引用一个存在的路径,返回True如果path引用一个断开的符号链接,返回False在某些平台上,尽管path物理存在,但是由于没有执行os.stat()的权限,该函数也会返回False

os.path.lexists(path)

如果path引用一个存在的路径,返回True对于断开的符号链接也返回True等同于缺少os.lstat()的平台上的exists()

出现于版本2.4。

os.path.expanduser(path)

在Unix和Windows平台上,返回参数,参数中开头的~或者~user被替换成user的主/家目录。

在Unix上,开头的~被替换成环境变量HOME,如果它被设置的话;否则,通过内建模块pwd在密码目录查询当前用户的家目录。如果开头是 ~user ,则直接在密码目录中查询(user的家目录)。

在Windows上,将使用HOMEUSERPROFILE,如果它们被设置的话;否则使用HOMEPATHHOMEDRIVE的组合。如果开头是~user,首先按上述方式得到user路径,然后移除最后的目录部分。

如果扩展失败或者参数path不是以~打头,则直接返回参数(path)。

os.path.expandvars(path)

返回参数,其中的环境变量被扩展。参数中形如$name或者${name}的部分被替换成环境变量name的值。如果格式不正确或者引用了不存在的变量,则不进行替换(或者扩展)。

在Windows上, 除了$name${name}之外还支持如%name%这样的扩展。

os.path.getatime(path)

返回path的最后访问时间。返回的是从Unix纪元开始的跳秒数(epoch,Unix纪元,即GMT 1970-01-01 00:00:00)(参见time模块)。如果文件不存在或者不可访问,返回os.error

出现于版本1.5.2。

改变于版本2.3:如果os.stat_float_times()返回True,则结果是浮点数。

os.path.getmtime(path)

返回path的最后修改时间。返回的是从Unix纪元开始的跳秒数(参见time模块)。如果文件不存在或者不可访问,返回os.error

出现于版本1.5.2。

改变于版本2.3:如果os.stat_float_times()返回True,则结果是浮点数。

os.path.getctime(path)

返回系统的ctime,在Unix这样的系统上,它是文件元数据最后修改时间(或者可以说是文件状态最后修改时间);在Windows这样的系统上,它是path的创建时间。返回的是从Unix纪元开始的跳秒数(参见time模块)。如果文件不存在或者不可访问,返回os.error

出现于版本2.3。

os.path.getsize(path)

返回path的大小,以字节为单位。如果文件不存在或者不可访问,返回os.error

出现于版本1.5.2。

os.path.isabs(path)

如果path是绝对路径名,返回True在Unix上,这表示路径以/开始;在Windows上,这表示路径以\开始(在去掉可能的盘符后,如C:)。

os.path.isfile(path)

如果path是一个存在的普通文件,返回True它会跟随符号链接,所以对相同的路径,islink()isfile()可以同时为真。

os.path.isdir(path)

如果path是一个存在的目录,返回True它会跟随符号链接,所以对于相同的路径,islink()isdir()可以同时为真。

如果path引用的目录条目是个符号链接,返回True如果Python运行期不支持符号链接,则总是返回False

os.path.ismount(path)

如果路径名path是一个mount point(挂载点),返回True挂载点是文件系统中的一点,不同的文件系统在此被挂载。它检查path的父目录path/..path是否在不同的设备上,或者检查path/..path是否指向相同设备的相同i-node,——这可以检查出Unix和POSIX变种下的挂载点。

os.path.join(path1[, path2[, ...]])

将一个或多个路径正确地连接起来。如果任何一个参数是绝对路径,那之前的参数就会被丢弃,然后连接继续(如果在Windows上,如果有盘符,盘符也会被丢弃)。返回的值是path1path2等等的连接,每个非空部分除了最后一个后面只跟随一个目录分隔符(os.sep)。(这意味着最后一部分为空将导致路径以分隔符结尾。)注意,在windows上, 由于每个盘符都是一个目录,因此,os.path.join("c:", "foo") 将返回一个C盘的相对路径,即基于C盘C:的绝对路径 (c:\foo), 而非一个相对路径c:foo.

os.path.normcase(path)

标准化路径名的大小写。在Unix和Mac OS X上,原样返回路径;在大小写不敏感的系统上,将路径名转换成小写。在Windows上,还会将斜线转换成反斜线。

os.path.normpath(path)

标准化路径名,合并多余的分隔符和上层引用,这样A//B, A/B/, A/./BA/foo/../B 都变成 A/B该字符串操作可能改变包含符号链接的路径的含义。在Windows上,还会将斜线转换成反斜线。若要标准化大小写,请使用normcase()

os.path.realpath(path)

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

出现于版本 2.2。

os.path.relpath(path[, start])

返回自当前目录或者可选的start 目录的 path相对文件路径。这只是单纯的路径计算:不会访问文件系统以确认path 或者 start 的存在性或者属性。

start 默认为os.curdir

可用的平台: Windows、 Unix。

出现于版本 2.6。

os.path.samefile(path1, path2)

如果两个路径名参数引用的是相同的文件或目录(由设备号和i-node号指示),则返回True如果在任一路径上调用os.stat()失败将抛出异常。

可用的平台:Unix。

os.path.sameopenfile(fp1, fp2)

如果描述符fp1fp2引用的是相同的文件,则返回True

可用的平台:Unix。

os.path.samestat(stat1, stat2)

如果文件信息元组stat1stat2引用的是相同的文件,则返回True这些结构可能是由os.fstat()os.lstat()或者os.stat()返回。该函数底层使用samefile()sameopenfile()实现比较。

可用的平台:Unix。

os.path.split(path)

将路径名path 分割成(head, tail),其中tail路径名的最后一部分,head 是其之前的所有部分。tail部分永远不会包含斜线;如果path以斜线结束,tail 将为空。如果path中没有斜线,head将为空。如果path为空,headtail两个都将为空。尾部的斜线会从head中去除掉,除非它是根目录(只包含一个或多个斜线的目录)。对于所有情况,join(head, tail)都将返回一个和path相同的位置(但是表示的字符串可能不一样)。另请参阅dirname()basename()函数。

os.path.splitdrive(path)

path分割成一个(drive, tail)对,其中drive是一个驱动器描述符或者空字符串。在没有使用驱动器描述符的系统上,drive 将永远是空字符串。无论哪一种情况,drive + tail将和 path相同。

出现于版本1.3。

os.path.splitext(path)

将路径名path分割成一个(root, ext)对使得root + ext == pathext 为空或者以点号开始并至多包含一个点。路径名前面的点号将被忽略;splitext('.cshrc') 返回 ('.cshrc', ')

版本2.6 以后的变化:当点号是第一个字符时,早期的版本将产生一个空的root。

os.path.splitunc(path)

path 分隔成一个(unc, rest)对,unc 是UNC挂载点(例如r'\\hostmount'),rest 是路径剩下的部分(例如 r'\path\file.ext')。对于包含驱动器字母的路径,unc将永远是空字符串。

可用的平台:Windows。

os.path.walk(path, visit, arg)

以 path 为根目录(如果 path 为目录,则包括它 本身),为目录树中每一个目录以(arg, dirname, names)参数调用函数visit参数 dirname 表示访问的目录,参数 names 列出该目录中的文件(从os.listdir(dirname) 得到)。 visit 函数可以修改names 以改变dirname 下访问的目录集合,例如为了避免访问目录树中特殊部分。names 引用的对象必须使用del或者切片赋值就地修改。)

注意

指向目录的符合链接不会被当作子目录,因此 walk() 将不会访问它们。To visit linked directories you must identify them with os.path.islink(file) and os.path.isdir(file), and invoke walk() as necessary.

注意

该函数已经被弃用,并且,为了鼓励使用 os.walk(),该函数在 Python 3 中已经被移除。

os.path.supports_unicode_filenames

如果可以使用任意Unicode 字符串作为文件名则为True(在文件系统强加的限制之内)。

出现于版本2.3.

相关文章推荐

python中os.path模块下的函数总结

python中os.path模块下的函数总结: #coding:utf-8 import os path = 'C:\Python27\Lib\site-packages\myLibra...

python中os.path常用模块

python中os.path常用模块 os.path.sep:路径分隔符 linux下就用这个了’/’ os.path.altsep: 根目录 os.path.curdir:当前目录 os.p...

Python中os.path的妙用

1.基本知识    os.path在不同的环境中设置文件的路径时作用非常大,我们经常在Django或Flask中都看到它的身影,常用的其实有下面的几个方法:常用方法作用os.path.dirname(...
  • xpleaf
  • xpleaf
  • 2016年03月13日 11:45
  • 3824

python中的os.path模块用法(一)

python中的os.path是比较常用的模块,把其中的几个函数介绍如下: 1. dirname()   用于去掉文件名,返回目录所在的路径 如: >>> import os >>> os.p...

os.path.isfile 使用误区

下列这几条语句,看出什么问题了不? for file in os.listdir(path):         if os.path.isfile(file) and os.path.sp...

Python 主要模块和常用方法简览

原文地址:http://blog.csdn.net/hwhjava/article/details/22284399 ******************** PY核心模块方法 **...

python os.path.sep

python中os.path常用模块 os.path.sep:路径分隔符 linux下就用这个了’/’ os.path.altsep: 根目录 os.path.curdir:当前目录 os...
  • renduy
  • renduy
  • 2015年01月08日 09:12
  • 2491

Python os模块的Examples

对我来说Python主要是作为我提升工作效率的脚本语言,所以os模块是必须熟练掌握的。 os.sep 可以取代操作系统特定的路径分割符。 >>> os.sep '\\' os.n...

python中os模块用法

一、os模块概述 Python os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。(一语中的) 二、常用方法 1、os.name 输出字符串指示正在使...

对Mac下Python添加路径PATH的总结

问题描述:Mac系统,虽然原本系统自带python,我自己又下载了python2.7 使用IDLE,安装了pip装了几个包,后来又装了个anoconda。发现自己下载的Python IDLE不能使用c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python os.path常用操作
举报原因:
原因补充:

(最多只允许输入30个字)