0%

python os.path模块

python os.path用法

导入方法

1
import os

os.path.dirname

1
2
3
4
5
6
7
8
9
# os.path.dirname 返回文件路径,不包括文件名
file1_dir = os.path.dirname("D:\\6_code\pycharm\download.py")
file2_dir = os.path.dirname("D:\\6_code\\pycharm\\download.py")
file3_dir = os.path.dirname("D:/6_code/pycharm/download.py")
file4_dir = os.path.dirname("D://6_code//pycharm//download.py")
print(file1_dir)
print(file2_dir)
print(file3_dir)
print(file4_dir)
out:
D:\6_code\pycharm
D:\6_code\pycharm
D:/6_code/pycharm
D://6_code//pycharm

os.path.dirname(file)

os.path.dirname(file)返回脚本的路径,但是需要注意一下几点:

1、必须是实际存在的.py文件,如果在命令行执行,则会引发异常NameError: name ‘file‘ is not defined

2、在运行的时候如果输入完整的执行的路径,则返回.py文件的全路径如:

python c:/test/test.py 则返回路径 c:/test ,如果是python test.py 则返回空

3、结合os.path.abspath用,效果会好,如果大家看过一些python架构的代码的话,会发现经常有这样的组合

os.path.dirname(os.path.abspath(file)),os.path.abspath(file)返回的是.py文件的绝对路径

这就是os.path.dirname(file)的用法,其主要总结起来有:
1、不要已命令行的形式来进行os.path.dirname(file)这种形式来使用这个函数

2、结合os.path.abspath()使用

os.path.abspath

1
2
3
4
5
# os.path.abspath 返回绝对路径
abs_dir = os.path.abspath(os.path.dirname("D://6_code//pycharm/download.py"))
print(abs_dir)
abs2_dir = os.path.abspath("D://6_code//pycharm/download.py")
print(abs2_dir)
out:
D:\6_code\pycharm
D:\6_code\pycharm\download.py

返回上一层目录

1
2
3
4
5
# 在路径后加上'/..’相当于返回上一层目录
test = os.path.dirname("D://6_code//pycharm/download-scannet.py") + '/..'
test1 = os.path.abspath(os.path.dirname("D://6_code//pycharm/download-scannet.py") + '/..')
print(test)
print(test1)
out:
D://6_code//pycharm/..
D:\6_code

os.path.split

1
2
3
4
5
6
# os.path.split将路径和文件分开
file_split = osp.split('D://6_code//pycharm/download-scannet.py')
print(file_split)
# os.path.splitext将文件及路径和扩展名分开
file_splitext = osp.splitext('D://6_code//pycharm/download-scannet.py')
print(file_splitext)
out:
('D://6_code//pycharm', 'download-scannet.py')
('D://6_code//pycharm/download-scannet', '.py')