目录
1 os.path
1.1 os.path.expanduser()
函数作用:把path中包含的'~'
和'~user'
转换成用户目录。
在Linux系统中,你可以方便地使用'~'
来代替路径'/home/user_name'
,但是python是不认识'~'
的,如果你写路径的时候直接写'~/balabala'
,程序是跑不动的,所以如果你要用'~'
,你就应该用这个os.path.expanduser('~')
把'~'
展开。
print(os.path.expanduser('~'))
print(os.path.expanduser('~/balabala'))
print(os.path.expanduser('./balabala')) # 该函数只对'~'起作用
运行结果:
# abcd2474是我的用户名
'/home3/abcd2474'
'/home3/abcd2474/balabala'
'./balabala'
注:在Windom系统中,os.path.expanduser('~')
输出'C:\Users\user_name'
。
1.2 os.path.abspath()
函数作用:返回绝对路径。
print(os.path.abspath('.')) # 当前目录的绝对路径
print(os.path.abspath('./')) # 同上
print(os.path.abspath('')) # 同上
print(os.path.abspath('..')) # 上一级目录的绝对路径
print(os.path.abspath('../')) # 同上
print(os.path.abspath('./balabala')) # 该路径对应的绝对路径
print(os.path.abspath('balabala')) # 同上
print(os.path.abspath(__file__)) # 返回程序所在文件的绝对路径
运行结果:
# 程序在/home3/abcd2474/pyproject/my_raw_code/my_test/test1.py中
'/home3/abcd2474/pyproject/my_raw_code/my_test'
'/home3/abcd2474/pyproject/my_raw_code/my_test'
'/home3/abcd2474/pyproject/my_raw_code/my_test'
'/home3/abcd2474/pyproject/my_raw_code'
'/home3/abcd2474/pyproject/my_raw_code'
'/home3/abcd2474/pyproject/my_raw_code/my_test/balabala'
'/home3/abcd2474/pyproject/my_raw_code/my_test/balabala'
'/home3/abcd2474/pyproject/my_raw_code/my_test/test1.py'
组合技1:os.path.expanduser()
和os.path.abspath()
经常组合起来用。
path = os.path.abspath(os.path.expanduser(path))
1.3 os.path.basename()
函数作用:返回文件名,即返回路径中最底层的文件名(文件或文件夹的名字),由于是最底层,所以称为其为basename
。
注:路径的组成形式为:“dirname/basename”,即“文件路径/文件名”。
print(os.path.basename('./dir1/dir2/dir3/file.jpg'))
print(os.path.basename('./dir1/dir2/dir3'))
print(os.path.basename('./dir1/dir2'))
print(os.path.basename('./dir1'))
运行结果:
'file.jpg'
'dir3'
'dir2'
'dir1'
1.4 os.path.dirname()
函数作用:返回文件路径,即路径中的dirname。
print(os.path.dirname('./dir1/dir2/dir3/file.jpg'))
print(os.path.dirname('./dir1/dir2/dir3'))
print(os.path.dirname('./dir1/dir2'))
print(os.path.dirname('./dir1'))
运行结果:
'./dir1/dir2/dir3'
'./dir1/dir2'
'./dir1'
'.'
1.5 os.path.split()
函数作用:把路径分割成 dirname 和 basename,并返回一个元组。
print(os.path.split('./dir1/dir2/dir3/file.jpg'))
print(os.path.split('./dir1/dir2/dir3'))
print(os.path.split('./dir1/dir2'))
print(os.path.split('./dir1'))
运行结果:
('./dir1/dir2/dir3', 'file.jpg')
('./dir1/dir2', 'dir3')
('./dir1', 'dir2')
('.', 'dir1')
于是乎:
os.path.split(path)[0] == os.path.dirname(path)
os.path.split(path)[1] == os.path.basename(path)
1.6 os.path.splitext()
函数作用:分割路径,返回路径名和文件扩展名的元组。
print(os.path.splitext('./dir1/dir2/dir3/file.jpg'))
print(os.path.splitext('./dir1/dir2/dir3'))
print(os.path.splitext('./dir1/dir2'))
print(os.path.splitext('./dir1'))
运行结果:
('./dir1/dir2/dir3/file', '.jpg')
('./dir1/dir2/dir3', '')
('./dir1/dir2', '')
('./dir1', '')
1.7 路径判断函数
os.path.isfile(path)
:判断路径path是否为文件。os.path.isdir(path)
:判断路径path是否为目。os.path.isabs(path)
:判断路径path是否为绝对路径。os.path.islink(path)
:判断路径path是否为链接。os.path.ismount(path)
:判断路径path是否为挂载点。os.path.exists(path)
:判断路径path是否存在。
持续更新中。。。。
[1]: Python os.path() 模块.