os.path 模块实现了一些操作路径名字符串的函数,可以通过

import os.path

  使用该模块,不过即使仅仅

import os

  也可以使用该模块的方法。

1. abspath(path)

os.path.abspath(path)

  返回参数 path 标准化后对应的绝对路径。

例:

>>> os.path.abspath('revirew.txt')
'D:\\programs\\leetcode\\revirew.txt'

 2. basename(path)

 os.path.basename(path)

  basename()求参数 path 最右端的 base 部分,等于 os.path.split(path)[1]。

例:

>>> os.path.split('D:\\programs\\leetcode\\revirew.txt')
('D:\\programs\\leetcode', 'revirew.txt')
>>> os.path.basename('D:\\programs\\leetcode\\review.txt')
'review.txt'
>>> os.path.split('D:\\programs\\leetcode\\')
('D:\\programs\\leetcode', '')
>>> os.path.basename('D:\\programs\\leetcode\\')
''

  要注意,如果 path 以目录分割符结尾,os.path.split()[1] 和os.path.basename() 都将返回一个空的字符串,这个Linux中的 $ basename 命令是很不同的。

3. commonprefix(list)

os.path.commonprefix(list)

  参数 list 是一个由字符串组成的列表,commonprefix()返回这些字符串的最大公共前缀,注意这个函数不仅可以处理路径,还可以处理任意的字符串。

例:

>>> os.path.commonprefix(['flower', 'flow'])
'flow'

4. dirname(path)

os.path.dirname(path)

  返回 path 所在的目录名。等于 os.path.split(path)[0]。注意该函数只能返回参数 path 中 提供的信息,并不会自动帮你获取一个路径的父目录信息。

例:

>>> os.path.dirname('D:\\programs\\leetcode\\')
'D:\\programs\\leetcode'
>>> os.path.dirname('D:\\programs\\leetcode\\review.txt')
'D:\\programs\\leetcode'
>>> os.path.dirname('review.txt')
''

  注意返回的 结果最右端不包含路径分隔符。

5. exists(path)

os.path.exists(path)

  若参数对应的路径path存在,返回真值,对于无效的符号链接返回假值。有的平台上如果不能在目标路径上执行 os.stat() 函数,即使参数路径path物理存在,该函数也可能返回假值。

  等于os.access(path, F_OK)。

6. lexists(path)

 os.path.lexists(path)

  Return True if path refers to an existing path. Returns True for broken symbolic links. Equivalent to exists() on platforms lacking os.lstat().

7. expanduser(path)

 os.path.expanduser(path)

8. expandvars(path)

os.path.expandvars(path)

  使用环境变量的具体值替代参数 path 中的环境变量,如果 path 中提供的环境变量不存在,将不会扩展替换 path

例:

 >>> os.path.expandvars("$HOME/FOO")
'C:\\Users\\ymzhang/FOO'
>>> os.path.expandvars("$HOMEPATH/FOO")
'\\Users\\ymzhang/FOO'
>>> os.path.expandvars("$HOMEDRIVE/FOO")
'C:/FOO'
>>> os.path.expandvars("$DARREN/FOO")
'$DARREN/FOO'

  其中第7行提供了一个不存在的环境变量名,此时Python不会对参数进行处理。Windows中,除了$varName和${varName}表示环境变量,还可以使用 %varName% 的形式表示环境变量:

 >>> os.path.expandvars("${HOME}/foo")
'C:\\Users\\ymzhang/foo'
>>> os.path.expandvars("%HOME%/foo")
'C:\\Users\\ymzhang/foo'

 9. getatime(path)

os.path.getatime(path)

  返回指定路径 path 最后一次被访问的时间,返回的结果是自 epoch 以来经过的秒数,如果指定的路径不存在或者不可访问,将会抛出异常 os.error。

  注:getatime(path) 的结果就等于 os.stat(path).st_atime:

 >>> os.path.getatime('review.txt')
1437488202.646196
>>> os.stat('review.txt').st_atime
1437488202.646196

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

10. getmtime(path)

os.path.getmtime(path)

  返回指定路径 path 最后一次被修改的时间,返回的结果是自 epoch 以来经过的秒数,如果指定的路径不存在或者不可访问,将会抛出异常 os.error。

  注:getmtime(path) 的结果就等于 os.stat(path).st_mtime:

 >>> os.path.getmtime('review.txt')
1437497408.4901712
>>> os.stat('review.txt').st_mtime
1437497408.4901712

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

11. getctime(path)

os.path.getctime(path)
  • 在Unix系统上,返回的 ctime 是指定文件 path 的元数据上一次被修改的时间;
  • 在Windows系统上,返回的 ctime 是指定文件 path 创建的时间。

  返回的结果是自 epoch 以来经过的秒数,如果指定的路径不存在或者不可访问,将会抛出异常 os.error。

  注:getmtime(path) 的结果就等于 os.stat(path).st_mtime:

 >>> os.path.getctime('review.txt')
1437488202.646196
>>> os.stat('review.txt').st_ctime
1437488202.646196

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

12. getsize(path)
os.path.getsize(path)

  返回指定文件 path 的大小(单位:字节),如果指定的路径不存在或者不可访问,将会抛出异常 os.error。

  注:getsize(path) 的结果就等于 os.stat(path).st_size:

例:

 >>> os.path.getsize('review.txt')
570L
>>> os.stat('review.txt').st_size
570L

13. isabs(path)

 os.path.isabs(path)

  判断 path 是不是绝对路径:

  • Unix平台上,path是不是以“/”开头;
  • Windows平台上,path以 盘符 加上  os.sep  开头。

14. isfile(path)

os.path.isfile(path)

  判断 path 是不是一个存在的普通文件,Unix平台上,isfile()同样跟踪符号连接,此时 islink() 和 isfile() 都返回 True。

15. isdir(path)

os.path.isdir(path)

  判断 path 是不是一个目录。Unix平台上,isdir()同样跟踪符号连接,此时 islink() 和 isdir() 都返回 True。

16. islink(path)

os.path.islink(path)

  判断 path 是不是一个符号连接,在不支持符号链接的平台上,islink()总是返回False。

  

17. ismount(path)

os.path.ismount(path)

  判断给定的path是不是一个挂载点,在不支持挂载点的平台上总是返回False.

  挂载点是一个文件系统上挂载其他文件系统的地方,

  • 如果path和path的父目录(path/..)不在一个设备上
  • or whether path/.. and path point to the same i-node on the same device

来判断一个路径是否是挂载点。

  

18. join(path, *paths)

 os.path.join(path, *paths)

  以适合当前平台的目录分隔符连接一个或多个路径。

  返回一个连接了path*paths所有成员的路径(字符串),其间以一个目录分隔符(os.sep)分隔。如果*paths的最后一个成员是一个空字符串(""),那么连接后的结果将以目录分隔符结尾,否则连接后的结果不包括目录分隔符。

例:

>>> os.path.join("a\\b", "c\\d")
'a\\b\\c\\d'
>>> os.path.join("a\\b", "c\\d", "")
'a\\b\\c\\d\\'

  如果*paths中的某一个是绝对路径,那么这个路径前面的参数全部抛弃,连接从这个绝对路径后面开始并继续下去,最终的结果是一个绝对路径。例:

>>> os.path.join("a\\b", "c\\d", "")
'a\\b\\c\\d\\'
>>> os.path.join("a\\b", "\\c\\d")
'\\c\\d'

  可以发现,绝对路径前面的参数都被无视。  

  Windows下,*paths的某个成员是绝对路径不会改变盘符,除非某一个成员中包含盘符,那么这个路径前面的参数全部抛弃,路径连接会从新的盘符下开始。 Note that since there is a current directory for each drive,os.path.join("c:", "foo") represents a path relative to the current directory on drive C: (c:foo), notc:\foo

19.

os.path.normcase(path)

  Normalize the case of a pathname. On Unix and Mac OS X, this returns the path unchanged

  on case-insensitive filesystems, it converts the path to lowercase. On Windows, it also converts '/' to '\'.

20. normpath(path)

os.path.normpath(path)

  标准化 path 中的路径名。去除多余的目录分隔符和中间目录(如:“../”, “./”等)。

例:normpath(path)
>>> os.path.normpath("c:\\.\\test")
'c:\\test'
>>> os.path.normpath("c:\\..\\test")
'c:\\test'
  在Windows平台上,normpath(path)会把“/”转换成“\”。
21. 
os.path.realpath(path)

  Return the canonical path of the specified filename, eliminating any symbolic links encountered in the path (if they are supported by the operating system).

22.

 os.path.relpath(path[, start]) 
Return a relative filepath to path either from the current directory or from an optional startdirectory. This is a path computation: the filesystem is not accessed to confirm the existence or nature of path or start.
start defaults to os.curdir.
23. 
os.path.samefile(path1, path2) 
Return True if both pathname arguments refer to the same file or directory (as indicated by device number and i-node number). Raise an exception if a os.stat() call on either pathname fails.
Availability: Unix.
24. 
os.path.sameopenfile(fp1, fp2) 
Return True if the file descriptors fp1 and fp2 refer to the same file.
Availability: Unix.
25. 
os.path.samestat(stat1, stat2) 
Return True if the stat tuples stat1 and stat2 refer to the same file. These structures may have been returned by os.fstat()os.lstat(), or os.stat(). This function implements the underlying comparison used by samefile() and sameopenfile().
Availability: Unix.
26. 
os.path.split(path)

  将参数 path 分割成一个二元组——(dir, base),然后进行os.path.join(dir, base)能够重新得到path。

  注意 dir 的结尾一定不含 os.sep,而整个 base 中也不含os.sep,所以如果path是以“/”或"\\"结尾,那么此时的base就是""。

  注意os.path.split()与os.path.dirname()和os.path.basename()的关系。

  t = os.path.split(path),则 t[0] 等于os.path.dirname(path), 而 t[1] 等于 os.path.basename(path)

27.

os.path.splitdrive(path)

  将参数 path 分割成二元组——(drive,tail),其中drive是盘符,tail是剩余的路径。

  在不支持盘符的系统(如Unix)上,drive总是""。

例:

>>> os.path.splitdrive("c:\\..\\test")
('c:', '\\..\\test')
>>> os.path.splitdrive("\\..\\test")
('', '\\..\\test')

28.

os.path.splitext(path)

  分割出文件扩展类型,将参数 path 分割成二元组——(root,ext),满足root + ext = path,其中,

  • ext 或者为"",或者最多只能包含一个句点".",如果 path 是以句点“.”开头,那么ext为空:

例:

>>> os.path.splitext('.cshrc')
('.cshrc', '')
>>> os.path.splitext("\\..\\test.txt")
('\\..\\test', '.txt')

29.

os.path.splitunc(path)

  Split the pathname path into a pair (unc, rest) so that unc is the UNC mount point (such asr'\\host\mount'), if present, and rest the rest of the path (such as r'\path\file.ext'). For paths containing drive letters, unc will always be the empty string.
  Availability: Windows.
30.
os.path.supports_unicode_filenames 
  True if arbitrary Unicode strings can be used as file names (within limitations imposed by the file system).
  New in version 2.3.

(原创)Python文件与文件系统系列(3)——os.path模块的更多相关文章

  1. (原创)Python文件与文件系统系列(2)——os模块对文件、文件系统操作的支持

    os模块的功能主要包括文件系统部分和进程管理部分,这里介绍其中与文件系统相关的部分. 当请求操作系统执行操作失败时,os模块抛出内置异常 exceptions.OSError 的实例,可以通过 os. ...

  2. (原创)Python文件与文件系统系列(1)—— file 对象

    本系列将从四个部分简单介绍Python对文件系统的操作与支持: 1. Python内置的 file 对象 2. Python的os模块对文件.文件系统操作的支持 3. Python的os.path模块 ...

  3. (原创)Python文件与文件系统系列(5)——stat模块

    stat模块中定义了许多的常量和函数,可以帮助解释 os.stat().os.fstat().os.lstat()等函数返回的 st_result 类型的对象. 通常使用 os.path.is*() ...

  4. python中split()及os.path模块的使用方法

    返回path规范化的绝对路径path=os.path.abspath('test.py')print(path)输出 D:\Caps\test.pypath=os.path.abspath('D:\\ ...

  5. (原创)Python文件与文件系统系列(4)——文件描述字操作

    文件描述字(file descriptor,fd)是系统中用来唯一记录当前已经打开的文件的标识号,fd是一个整数. 除了file对象外,Python还提供对fd的操作,对fd的操作更加底层,fd和Py ...

  6. python编程os、os.path 模块中关于文件、目录常用的函数使用方法

    os模块中关于文件/目录常用的函数使用方法   函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名( ...

  7. python—— 文件的打开模式和文件对象方法 & os、os.path 模块中关于文件、目录常用的函数使用方法

    引用自“鱼c工作室”     文件的打开模式和文件对象方法  : https://fishc.com.cn/forum.php?mod=viewthread&tid=45279&ext ...

  8. python os.path模块--转载

    os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...

  9. python模块之os和os.path模块

    1.os模块os.listdir(dirname) 列出dirname下的目录和文件os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径.os.getenv()和os.pu ...

随机推荐

  1. 【工具】Sublime + MarkdownEditing + OmniMarkupPreviewer使用起来

    Package Control的安装 下载安装Sublime Text3后,View -> Show Console调用Console. 在Console输入以下代码安装: import url ...

  2. 针对后台TCP服务F5健康检查配置

    1.TCP-HALF-OPEN方式 TCP-HALF-OPEN的探测方式,实际是F5每隔一个固定的时间,发送一个SYN包给资源池pool中的一个member,等待服务器返回SYN_ACK,在收到SYN ...

  3. C#学习笔记(27)——委托排序(1)

    说明(2017-11-20 17:21:35): 1. 感觉难点都在冒泡排序上..貌似之前跳过去了没学啊!冒泡排序的精髓就在于,两两比较,最大的排到最后一位,再把前面的重新两两比较,把最大的排到倒数第 ...

  4. Mysql注入绕过姿势

    1.内联绕过 2.编码绕过,如URLEncode编码,ASCII,HEX,unicode编码绕过 or 1=1即%6f%72%20%31%3d%31,而Test也可以为CHAR(101)+CHAR(9 ...

  5. java基础篇---Servlet过滤器

    Servlet过滤器从字面上的字意理解为景观一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Servlet过滤器主要用于对浏览器的 ...

  6. 封装篇——图片模块(Glide)

    如今市面上差点儿全部的app都用到了图片,图片模块的开发是app开发中不可缺少的一块工作, 开源的力量是强大的.好多优秀的第三方项目能够任君使用,帮助我们提高效率.而且不须要反复造轮子,这边我採用的是 ...

  7. WPF自定义行为Behavior,实现双击控件复制文本

    WPF引用xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity& ...

  8. c++--------获取某个路径下所有文件的文件名,读写TXT文件到新的文件

    好久没写io操作了,手生了好多,为了防止自己老年痴呆,最简单实用的c++代码也push上来吧, 环境:mac,xcode(注意mac环境下Windows的函数不能用) 功能:打开一个文件目录,把所有文 ...

  9. jdbc读取百万条数据出现内存溢出的解决办法

    本人在做项目实施时,我们使用的是mysql数据库,在不到一个月的时间已经有了2千万条数据,查询的时候非常慢,就写了一个数据迁移的小项目,将这两千万条数据存放到MongoDB中看效率怎么样,再读取数据时 ...

  10. 再谈git的http服务

    因为git服务器搬迁,需要重新安装git服务器,在网上搜索了下,发现之前的方法太复杂,复杂到自己都没彻底弄明白.其实通过git自带的git-http-backend脚本配合apache2的http服务 ...