第十章 os.path模块

1. os.path模块介绍

os 模块是Python 内置的与操作系统功能和文件系统相关的模块。该模块的子模块os.path 是专门用于进行路径操作的模块。常用的路径操作主要有判断目录是否存在、创建目录、删除目录和遍历目录等。

说明:在使用os.path 模块时,推荐使用字符串(Unicode)表示文件名或者路径。由于某些Unix 操作系统不支持Unicode 字符串,所以需要使用字节对象;而在Windows 操作系统中,则推荐所有的应用程序都使用字符串对象来访问文件。

os 模块和它的子模块os.path 都属于内置模块,不需要安装,直接导入即可使用。在Python 程序中,使用import 语句导入os 模块后,既可以使用os 模块提供的属性和方法,又可以使用os.path模块提供的属性和方法。导入os 模块的代码如下:

import os

说明:导入os 模块后,也可以使用其子模块os.path。

如果在程序中,只涉及到os.path 模块的内容,也可以直接导入os.path,代码如下:

import os.path

使用上面的代码导入os.path 模块后,就可以使用该模块提供的属性和方法了。如果不确定该模块都提供了哪些属性和方法,可以使用Python 的内置函数dir() 获取其全部方法列表,代码如下:

import os.path         	# 操作路径的模块

print(dir(os.path))

2. supports_unicode_f ilenames属性——标记文件系统是否支持Unicode文件名

supports_unicode_filenames 属性用于标记当前的文件系统是否支持Unicode 文件名。语法格式如下:

os.path.supports_unicode_filenames

参数说明:

  • 返回值:如果文件系统支持Unicode文件名,则返回值为True。

使用supports_unicode_filenames 属性判断当前系统是否支持Unicode 文件名,代码如下:

import os.path                          		# 导入os.path模块

print(os.path.supports_unicode_filenames) 		# 打印当前系统是否支持Unicode文件名

3. abspath()方法——获取绝对路径

abspath() 方法用于返回文件或者目录的绝对路径。语法格式如下:

os.path.abspath(path)

参数说明:

  • path:表示要获取绝对路径的相对路径,可以是文件也可以是目录。

  • 返回值:返回获取到的绝对路径。

说明:绝对路径是指在使用文件时指定文件的实际路径。它不依赖于当前工作目录。

注意:abspath() 方法在获取实际路径时,并不会检查路径是否真实存在,只是把当前文件目录与abspath()方法给定的路径进行拼接。

使用abspath() 方法获取相对路径“demo\message.txt”的绝对路径,代码如下:

import os

print(os.path.abspath(r’demo\message.txt’)) 		# 打印绝对路径

如果当前工作目录为“E:\program\Python\Code”,则程序运行结果如下:

E:\program\Python\Code\demo\message.txt

使用abspath() 方法获取当前Python 文件的绝对路径,代码如下:

import os.path 					# 操作路径的模块

# 打印当前Python文件的绝对路径

print(os.path.abspath(os.path.basename(__file__)))

4. basename()方法——从一个路径中提取文件名

basename() 方法用于从一个路径中提取文件名。当指定的路径是一个不包括文件名的路径(如c:/temp/)时,返回空字符串。语法格式如下:

os.path.basename(path)

参数说明:

  • path:表示要提取文件名的路径。

  • 返回值:返回提取后的文件名。

使用basename() 方法获取相对路径“demo\message.txt”中的文件名,代码如下:

import os.path 									# 导入os.path模块

print(os.path.basename(r”demo\message.txt”)) 	# 打印文件名message.txt

程序运行结果如下:

message.txt

使用basename() 方法获取绝对路径中的文件名,代码如下:

import os 										# 导入os模块

path1 = 'e:/demo/test.txt'

path2 = 'e:/demo'

print(os.path.basename(path1))

print(os.path.basename(path2))

5. commonpath()方法——提取共有的最长路径

commonpath() 方法用于从一个目录列表中提取各个路径共有的最长路径。如果目录列表为空,或者各路径间没有共有路径,则返回空字符串。语法格式如下:

os.path.commonpath(paths)

参数说明:

  • paths:表示要提取路径的目录列表。

  • 返回值:返回提取后的字符串。

使用commonpath() 方法从目录列表中提取最长的共有路径,代码如下:

import os.path                                                      			# 导入os.path模块

pathlist = [r’E:/demo/temp.txt’,r’E:/demo/test/test.txt’,r’E:/demo/test.txt’] 	# 目录列表

print(os.path.commonpath(pathlist))                                   			# 打印最长的共有路径

6. commonpref ix()方法——提取共有的路径前缀

commonprefix() 方法用于从一个目录列表中提取各个路径共有的前缀。如果目录列表为空,或者各路径间没有共有前缀,则返回空字符串。语法格式如下:

os.path.commonprefix(list)

参数说明:

  • list:表示要提取前缀的目录列表。

  • 返回值:返回提取后的字符串。

说明:由于该方法一次只能处理一个字符,所以可能会返回无效路径。要获得有效路径,请使用commonpath() 方法。

使用commonprefix() 方法从目录列表中提取共有的路径前缀,代码如下:

import os.path 								# 导入os.path模块

pathlist = [r’E:/demo/temp.txt’,r’E:/demo/test/test.txt’,r’E:/demo/test.txt’] 		# 目录列表

print(os.path.commonprefix(pathlist)) 		# 打印最长的共有路径前缀

7. dirname()方法——获取路径中的目录

dirname() 方法用于从一个路径中提取目录。它相当于使用os.path.split() 方法分割路径后,得到的第一个元素。语法格式如下:

os.path.dirname(path)

参数说明:

  • path:表示要提取目录的路径。

  • 返回值:返回提取后的目录。

使用dirname() 方法从绝对路径“E:/demo/test/test.txt”中提取目录,代码如下:

import os.path                			# 导入os.path模块

path = r’E:/demo/test/test.txt’ 		# 绝对路径

print(os.path.dirname(path))   			# 提取目录

程序运行结果如下:

E:/demo/test

使用dirname() 方法从相对路径“python/demo/01/hello”中提取目录,代码如下:

import os.path 						# 导入os.path模块

path = r’ python/demo/01/hello’ 	# 相对路径

print(os.path.dirname(path)) 		# 提取目录

8. exists()方法——判断路径是否存在(准确)

exists() 方法用于判断路径(文件或目录)是否存在,如果存在则返回True ;不存在则返回False。如果是断开的符号链接,也返回False。语法格式如下:

os.path.exists(path)

参数说明:

  • path:表示要判断的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:如果给定的路径存在,则返回True,否则返回False。

注意:在使用exists() 方法时,如果某些平台未授予os.stat() 对所请求文件有执行的权限,即使路径真实存在,使用该方法也会返回False。

使用exists() 方法判断保存在“E:/mr/test/”目录下的“hello.py”文件是否存在,代码如下:

import os.path                   			# 导入os.path模块

path = r’E:/mr/test/hello.py’             	# 文件

if os.path.exists(path):          			# 判断文件是否存在

print(path,’文件存在!')

else:

print(path,’文件不存在!')

使用exists() 方法判断“E:/mr/test/”目录是否存在,代码如下:

import os.path                				# 导入os.path模块

path = r’E:/mr/test/# 目录

if os.path.exists(path):       				# 判断目录是否存在

print(path,’目录存在!')

else:

print(path,’目录不存在!')

9. lexists()方法——判断路径是否存在(不准确)

lexists() 方法用于判断路径(文件或目录)是否存在,如果存在则返回True,不存在则返回False ;如果是断开的符号链接则返回True。语法格式如下:

os.path.lexists(path)

参数说明:

  • path:表示要判断的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:如果给定的路径存在,则返回True,否则返回False。

说明:在使用lexists() 方法时,如果路径存在却已经损坏时,则返回True。

使用lexists() 方法判断保存在“E:/mr/test/”目录下的“hello.py”文件是否存在,代码如下:

import os.path                		# 导入os.path模块

path = r’E:/mr/test/hello.py’      	# 文件

if os.path.lexists(path):      		# 判断文件是否存在

print(path,’文件存在!')

else:

print(path,’文件不存在!')

10. expanduser()方法——替换“~user” 格式的路径名称

expanduser() 方法用于使用当前用户的主目录替换“”或“user”格式的路径。语法格式如下:

os.path.expanduser(path)

参数说明:

  • path:表示要替换的路径,需要以“~”为前缀,否则不执行替换。

  • 返回值:返回替换后的路径。如果替换失败或者路径不是以“~”开头,将返回替换前路径。

使用expanduser() 方法输出当前用户的主目录,代码如下:

import os.path                		# 导入os.path模块

print(os.path.expanduser(r’~)) 	# 打印当前用户的主目录

程序运行结果如下:

C:\Users\Administrator

如果expanduser() 方法的参数为“~”前缀后接一个路径名,则替换后得到当前用户的根目录(不包括用户名)。例如,将user 和当前用户的根目录拼接,代码如下:

import os.path 							# 导入os.path模块

print(os.path.expanduser(r’~user’)) 	# 将user和当前用户的根目录拼接

程序运行结果如下:

C:\Users\user

在使用PyInstaller 模块打包Python 程序为可执行文件时,默认会将生成的可执行文件保存到当前用户的dist 目录中,要获取该目录的完整路径可以使用下面的代码:

import os.path 								# 导入os.path模块

print(os.path.expanduser(r’~/dist’)) 		# 打印dist的完整路径

11. expandvars()方法——使用环境 变量的值替换

expandvars() 方法用于使用环境变量的参数数值替换路径中的指定变量。语法格式如下:

os.path.expandvars(path)

参数说明:

  • path:指定环境变量的参数,需要包含“$name”或“${name}”(其中的name 为已经定义的环境变量名称)。

  • 返回值:返回环境变量的值。

使用expandvars() 方法输出系统中配置的环境变量path 的值,代码如下:

import os.path 							# 导入os.path模块

print(os.path.expandvars(r’$path’)) 	# 打印环境变量path的值

12. getatime()方法——获取最后一次访问路径的时间

getatime() 方法用于获取最后一次访问路径的时间。语法格式如下:

os.path.getatime(path)

参数说明:

  • path:表示要获取的最后一次访问时间的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:返回从纪元开始到最后一次访问该路径的秒数,值为浮点数。

使用getatime() 方法获取指定目录的最后访问时间并输出,由于输出值为秒数,不容易看出具体时间,所以再应用time 模块将秒数转换为日期时间,代码如下:

import time                                                  		# 导入时间模块

import os.path                                               		# 导入os.path模块

mtime = os.path.getatime(r’E:/mr/test’)                          	# 获取路径最后一次访问时间

print(mtime)                                                 		# 打印秒数

print(time.strftime(%Y-%m-%d %H:%M:%S’,time.localtime(mtime)))    	# 转换为日期时间

13. getmtime()方法——获取最后一次修改路径的时间

getmtime() 方法用于获取最后一次修改路径的时间。语法格式如下:

os.path.getmtime(path)

参数说明:

  • path:表示要获取的最后一次修改时间的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:返回从纪元开始到最后一次修改该路径的秒数,值为浮点数。

使用getmtime() 方法获取指定目录的最后修改时间并输出,由于输出值为秒数,不容易看出具体时间,所以再应用time 模块将秒数转换为日期时间,代码如下:

import time                                                  		# 导入时间模块

import os.path                                            			# 导入os.path模块

mtime = os.path.getmtime(r’E:/mr/test’)                      		# 获取路径最后一次修改时间

print(mtime)                                                 		# 打印秒数

print(time.strftime(%Y-%m-%d %H:%M:%S’,time.localtime(mtime)))    	# 转换为日期时间

14. getctime()方法——获取路径的ctime

getctime() 方法用于获取路径的ctime。这里的ctime 由于操作系统的不同,代表的意思也不同。例如,在Unix 系统中它的含义为最后一次元数据更改的时间;在Windows 系统中它的含义则是创建时间。语法格式如下:

os.path.getctime(path)

参数说明:

  • path:表示获取的最后一次修改时间或创建时间的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:返回从纪元开始到创建或最后一次更改该路径的秒数,值为浮点数。

在Windows 系统中,获取指定目录的创建时间并输出。由于输出值为秒数,不容易看出具体时间,所以再应用time 模块将秒数转换为日期时间,代码如下:

import time                                		# 导入时间模块

import os.path                              	# 导入os.path模块

ctime = os.path.getctime(r’E:/mr/test’)        	# 获取路径的创建时间

print(ctime)                               		# 打印秒数

print(time.strftime(%Y-%m-%d %H:%M:%S’,time.localtime(ctime))) 		# 转换为日期时间

15. getsize()方法——获取路径的大小

getsize() 方法用于获取路径(目录或者文件)的大小(以字节为单位)。如果路径不存在或者无法访问,则抛出OSError 异常。语法格式如下:

os.path.getsize(path)

参数说明:

  • path:表示要获取大小的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:返回路径的大小,以字节为单位。如果指定的path 为文件,则返回该文件的大小;如果path 为目录,则返回描述该目录信息的文件的大小(例如,在Windows 10 系统中,获取某个目录的大小可能得到4096),并不是目录下全部文件的大小。

使用getsize() 方法获取“E:/mr/test/pdf/list.docx”文件的大小,代码如下:

import os.path 													# 导入os.path模块

print(os.path.getsize(r’E:/mr/test/pdf/list.docx’),’字节') 		# 打印文件的大小

16. isabs()方法——判断是否为绝对路径

isabs() 方法用于判断路径是否为绝对路径。语法格式如下:

os.path.isabs(path)

参数说明:

  • path:表示要判断的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:如果给定的路径是绝对路径,则返回True,否则返回False。

说明:在Unix 系统中,将以斜杠开头的路径视为绝对路径;而在Windows 系统中,以去除驱动器号后的(反向)斜线开头的视为绝对路径。

使用isabs() 方法分别判断两个文件的路径是否为绝对路径,代码如下:

import os.path                                 			# 导入os.path模块

print(os.path.isabs(r’demo\message.txt’))         		# 判断是否为绝对路径

print(os.path.isabs(r’E:/mr/test/pdf/list.docx’))   	# 判断是否为绝对路径

17. isf ile()方法——判断是否为普通文件

isfile() 方法用于判断是否为普通文件。语法格式如下:

os.path.isfile(path)

参数说明:

  • path:表示要判断的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:如果给定的路径对应的文件是普通文件,则返回True,否则返回False。

向isfile() 方法中传入一个绝对路径,判断该文件是否为普通文件,代码如下:

import os.path                                 			# 导入os.path模块

print(os.path.isfile(r’E:/mr/test/pdf/list.docx’)) 		# 判断是否为普通文件

18. isdir()方法——判断是否为目录

isdir() 方法用于判断指定的路径是否为目录。语法格式如下:

os.path.isdir(path)

参数说明:

  • path:表示要判断的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:如果给定的路径是目录,则返回True,否则返回False。

向isdir() 方法中传入绝对路径,判断该路径是否为目录,代码如下:

import os.path                                 			# 导入os.path模块

print(os.path.isdir(r’E:/mr/test/pdf’))            		# 判断是否为目录

print(os.path.isdir(r’E:/mr/test/pdf/list.docx’))   	# 判断是否为目录

19. islink()方法——判断指定目录是否为符号链接

islink() 方法用于判断指定的目录是否为符号链接(也称为软链接)。如果使用的Python 运行时不支持符号链接,则总是返回False。语法格式如下:

os.path.islink(path)

参数说明:

  • path:表示要判断的路径。

  • 返回值:如果给定的路径为符号链接,并且Python 运行时支持符号链接,则返回True,否则返回False。

使用islink() 方法判断一个路径是否为软链接,代码如下:

import os.path                   			# 导入os.path模块

print(os.path.islink(/tmp/mr’))    		# 判断是否为软链接

20. ismount()方法——判断是否为挂载点

ismount() 方法用于判断一个路径是否为挂载点。语法格式如下:

os.path.ismount(path)

参数说明:

  • path:表示要判断的路径。

  • 返回值:如果给定的路径是挂载点,则返回True,否则返回False。在Windows 系统中,驱动器盘符根目录和共享UNC 始终是挂载点。

使用ismount() 方法判断C 盘根目录是否为挂载点,代码如下:

import os.path                   			# 导入os.path模块

print(os.path. ismount(r’C:/))     		# 判断是否为挂载点

21. join()方法——拼接路径

join() 方法用于将两个或者多个路径拼接到一起组成一个新的路径。语法格式如下:

os.path.join(path, *paths)

参数说明:

  • path:表示要拼接的文件路径。

  • *paths:表示要拼接的多个文件路径,这些路径间使用逗号进行分隔。如果在要拼接的路径中,没有一个绝对路径,那么最后拼接出来的将是一个相对路径。

  • 返回值:拼接后的路径。

说明:使用os.path.join() 函数拼接路径时,并不会检测该路径是否真实存在。

使用join() 方法将绝对路径“E:\program\Python\Code”和相对路径“demo\hello.py”拼接到一起,代码如下:

import os.path                                            			# 导入os.path模块

print(os.path.join(“E:\program\Python\Code”,”demo\hello.py”))   	# 拼接字符串

程序运行结果如下:

E:\program\Python\Code\demo\hello.py

如果要拼接的路径中,存在多个绝对路径,那么按从左到右顺序,以最后一次出现的绝对路径为准,并且该路径之前的参数都将被忽略,代码如下:

import os.path                                            				# 导入os.path模块

print(os.path.join(‘E:/ code’,’E:/python/mr’,’Code’,’C:/,’demo’)) 		# 拼接字符串

22. normcase()方法——规范化路径名称的大小写

normcase() 方法用于规范化路径名称的大小写。语法格式如下:

os.path.normcase(path)

参数说明:

  • path:表示要规范的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:返回规范后的路径。在Windows 系统中,将路径名称中的所有字符转换为小写形式,并将正斜杠“/”转换为反斜杠“\”;在不区分大小写的操作系统中,返回原路径。

在进行拼接路径后,可能会出现分隔符和字母大小写形式不统一的问题,使用normcase() 方法将其统一,代码如下:

import os.path                                               			# 导入os.path模块

joinpath = os.path.join(r’E:/PROGRAM/PYTHON/CODE’,r’demo\hello.py’) 	# 拼接字符串

print(‘拼接后的路径:',joinpath)

print(‘规范后的路径:',os.path.normcase(joinpath))                 		# 打印规范路径

23. normpath()方法——规范路径名称

normpath() 方法用于规范路径名称。该方法的实现主要通过折叠冗余分隔符和上一级引用两种方式来规范路径名,例如,将A//B、A/B/、A/./B 和A/foo/…/B 都转换为A/B。该操作可能会更改包含符号链接的路径的本来含义。在Windows 系统中,它将正斜杠转换为反斜杠。语法格式如下:

os.path.normpath(path)

参数说明:

  • path:表示要规范的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:返回规范后的路径。

在进行拼接路径后,可能会出现分隔符不统一的问题,本锦囊将使用os.path.normpath() 方法将其统一,代码如下:

import os.path                                                   		# 导入os.path模块

joinpath = os.path.join(r’E:/program/Python/Code’,r’demo\\hello.py’)    # 拼接字符串

print(‘拼接后的路径:',joinpath)

print(‘规范后的路径:',os.path.normpath(joinpath))                     	# 打印规范路径

24. realpath()方法——获取实际路径

realpath() 方法用于返回指定路径的实际路径。当操作系统支持符号链接时,还会去掉路径中遇到的任何符号链接。语法格式如下:

os.path.realpath(path)

参数说明:

  • path:表示具体的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:如果给定的路径存在,则返回True,否则返回False。

说明:realpath() 方法在获取实际路径时,并不会检查路径是否真实存在,只是把当前文件目录与realpath() 方法给定的路径进行拼接。

当前Python 文件保存在计算机的桌面上,并且在它的同级目录中,包含一个名称为temp.py 的文件。通过os.path.realpath() 方法获取temp.py 文件的实际路径,代码如下:

import os.path                   		# 导入os.path模块

print(os.path.realpath(r’temp.py’)) 	# 获取文件的实际路径

程序运行结果如下:

C:\Users\Administrator\Desktop\temp.py

说明:os.path 模块的abspath() 方法与realpath() 方法的区别是,在支持符号链接的系统中,abspath() 方法不处理符号链接,而realpath() 方法则先处理路径中的符号链接,再返回绝对路径。

25. relpath()方法——计算相对路径

relpath() 方法用于返回从当前工作目录到指定目录的相对路径。语法格式如下:

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

参数说明:

  • path:表示要计算的路径,可以采用绝对路径,也可以采用相对路径。当采用绝对路径时,需要与当前工作目录在同一磁盘驱动器上。

  • start:可选参数,默认值为os.curdir(当前工作目录)。参数值可以直接使用字符串指定从哪里开始计算相对路径。

  • 返回值:返回从当前工作目录到指定目录的相对路径。

说明:使用relpath() 方法计算相对路径时,并不访问文件系统以确定路径是否真实存在。

当前工作路径为操作系统的桌面(C:/Users/Administrator/Desktop/),计算路径“C:/Users/Administrator/dist”到当前工作路径间的相对路径,代码如下:

import os.path                                                   			# 导入os.path模块

print(os.path.relpath(r’C:/Users/Administrator/dist’))                		# 计算相对路径

print(os.path.relpath(r’C:/Users/Administrator/dist’,’Administrator’))   	# 计算相对路径

程序运行结果如下:

..\dist

..\..\dist

说明:在相对路径中,“…\”表示当前路径的上一级。

26. samef ile()方法——比较两个路径是否相同

samefile() 方法用于比较两个路径是否为同一个文件或目录。语法格式如下:

os.path.samefile(path1, path2)

参数说明:

  • path1:表示路径1,可以采用绝对路径,也可以采用相对路径。

  • path2:表示路径2,可以采用绝对路径,也可以采用相对路径。

  • 返回值:如果路径1 和路径2 为同一个文件或目录,则返回True,否则返回False。

使用samefile() 方法比较一个通过绝对路径指定的路径和一个通过相对路径指定的路径是否为同一个目录,代码如下:

import os.path 														# 导入os.path模块

print(os.path.samefile(r’C:/Users/Administrator/dist’,../dist’))	# 比较两个路径是否相同

27. sameopenf ile()方法——比较两个打开的 文件描述符对象是否为同一个文件

sameopenfile() 方法用于比较两个打开的文件描述符对象是否为同一个文件。语法格式如下:

os.path.sameopenfile(fp1, fp2)

参数说明:

  • fp1 :表示打开的文件描述符对象,可以通过os.open() 方法或者open().fileno()方法创建。

  • fp2 :表示打开的文件描述符对象,可以通过os.open() 方法或者open().fileno()方法创建。

  • 返回值:如果两个文件描述符对象为同一个文件,则返回True,否则返回False。

采用不同方法打开同一个文件的文件描述符对象,并且使用sameopenfile() 方法比较两个文件描述符对象是否指向同一个文件,代码如下:

import os.path                              		# 导入os.path模块

fp1 = open(r’test.txt’,’r’).fileno()            	# 第一个文件描述符对象

fp2 = os.open(r’test.txt’,os.O_RDONLY)         		# 第二个文件描述符对象

print(os.path.sameopenfile(fp1,fp2))          		# 判断两个文件对象是否为同一个文件

28. samestat()方法——判断两个stat元组是否指向同一个文件

samestat() 方法用于判断两个文件信息元组是否指向同一个文件。语法格式如下:

os.path.samestat(stat1, stat2)

参数说明:

  • stat1:表示文件信息元组,可以通过os.stat()方法获取。

  • stat2:表示文件信息元组,可以通过os.stat()方法获取。

  • 返回值:如果给定的路径存在,则返回True,否则返回False。

使用samestat() 方法判断两个文件信息元组是否指向同一个文件,代码如下:

import os.path 											# 导入os.path模块

path = r’test.txt’ 										# 文件路径

stat1 = os.stat(path) 									# 第一个stat元组

stat2 = os.stat(os.open(path,os.O_RDONLY)) 				# 第二个stat元组

print(os.path.samestat(stat1,stat2))		 			# 判断两个stat元组是否为同一个文件

stat3 = os.stat(os.open(r’temp.py’,os.O_RDONLY)) 		# 第三个stat元组

print(os.path.samestat(stat1,stat3)) 					# 判断两个stat元组是否为同一个文件

29. split()方法——分割路径名

split() 方法用于从一个路径中分割出目录和文件名。语法格式如下:

os.path.split(path)

参数说明:

  • path:表示要分割的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:返回一个元组,与(os.path.dirname(),os.path.basename()) 返回的元组相同。如果指定的是一个相对路径,并且以斜杠结尾,则返回的元组的第二个元素为空。

使用split() 方法分别分割绝对路径(包括文件名)、绝对路径(不包括文件名)和相对路径(不包括文件名),代码如下:

import os.path                                     		# 导入os.path模块

print(os.path.split(r’E:/mr/test/pdf/list.docx’))      	# 分割绝对路径

print(os.path.split(r’E:/mr/test/pdf/))              	# 分割绝对路径

print(os.path.split(r’/test/pdf/list))               	# 分割相对路径

30. splitdrive()方法——分割驱动器和目录

splitdrive() 方法用于从一个路径中分割驱动器和目录,在不使用驱动器的操作系统中,返回元组的第一个元素始终为空字符串。语法格式如下:

os.path.splitdrive(path)

参数说明:

  • path:表示要分割的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:返回一个元组,它的第一个元素为字符串表示的驱动器名,第二个元素为字符串表示的目录。如果指定的路径为相对路径,则返回元组的第一个元素为空字符串。

使用splitdrive() 方法分别分割绝对路径和相对路径获得驱动器和目录,代码如下:

import os.path                                        		# 导入os.path模块

print(os.path.splitdrive(r’E:/mr/test/pdf/list.docx’))     	# 分割绝对路径

print(os.path.splitdrive(r’/test/pdf/list.docx’))          	# 分割相对路径

31. splitext()方法——分割文件名和扩展名

splitext() 方法用于从一个路径中分割基本文件名和扩展名。语法格式如下:

os.path.splitext(path)

参数说明:

  • path:表示要分割的路径,可以采用绝对路径,也可以采用相对路径。

  • 返回值:返回一个元组,它的第一个元素为字符串表示的基本文件名(路径中除扩展名以外的部分),第二个元素为字符串表示的扩展名(包括“.”号)。如果指定的路径中不包括扩展名,则返回元组的第二个元素为空字符串。

使用splitext() 方法分别分割绝对路径和相对路径获得文件名和扩展名,代码如下:

import os.path                                        		# 导入os.path模块

print(os.path.splitext(r’E:/mr/test/pdf/list.docx’))       	# 分割绝对路径

print(os.path.splitext(r’E:/mr/test/pdf/))               	# 分割没有文件名的绝对路径

print(os.path.splitext(r’mr/mot_cn.txt’))                 	# 分割相对路径

程序运行结果如下:

('E:/mr/test/pdf/list', '.docx')

('E:/mr/test/pdf/', '')

('mr/mot_cn', '.txt')
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值