参考博客:
我在C:\Users\admin\Desktop目录下写了一个001.py文件,文件代码如下
:
#-*- coding:utf-8 -*-
import os
#os.path.dirname(__file__)返回的是.py文件的目录
path1=os.path.dirname(__file__)
print(path1)
#os.path.abspath(__file__)返回的是.py文件的绝对路径(完整路径)
path2=os.path.abspath(__file__)
print(path2)
#组合使用
path3=os.path.dirname(os.path.abspath(__file__))
print(path3)
#os.path.join()拼接路径
path4= os.path.join(os.path.dirname(os.path.abspath(__file__)),'001.py')
print(path4)
OUT:
runfile('C:/Users/admin/Desktop/001.py', wdir='C:/Users/admin/Desktop')
C:/Users/admin/Desktop
C:\Users\admin\Desktop\001.py
C:\Users\admin\Desktop
C:\Users\admin\Desktop\001.py
相信你已经看出区别了,下面来总结一下:
os.path.dirname(file)
返回的是.py文件的目录os.path.abspath(file)
返回的是.py文件的绝对路径(完整路径)- 在命令行运行时,如果输入完整的执行的路径,则返回.py文件所在的目录,否则返回空目录。如:
os.path.dirname(os.path.abspath(file))
组合使用,如果大家看过一些python架构的代码的话,会发现经常有这样的组合- os.path.join()进行路径拼接
os.path.join()函数:
连接两个或更多的路径名组件
- 1.如果各组件名首字母不包含’/’,则函数会自动加上
- 2.第一个以”/”开头的参数开始拼接,之前的参数全部丢弃,当有多个时,从最后一个开始
- 3.如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾
- print(“2:”,os.path.join(’/aaaa’,’/bbbb’,’/ccccc.txt’)) #不良写法习惯
2: /ccccc.txt
- print(“22:”,os.path.join(’/aaaa/’,‘bbbb/’,‘ccccc.txt’)) #通常可以这样写
22: aaaa/bbb/ccccc.txt
- print(“2:”,os.path.join(’/aaaa’,’/bbbb’,’/ccccc.txt’)) #不良写法习惯
import os
Path1 = 'home'
Path2 = 'develop'
Path3 = 'code'
Path10 = Path1 + Path2 + Path3
Path20 = os.path.join(Path1,Path2,Path3)
print ('Path10 = ',Path10)
print ('Path20 = ',Path20)
输出
Path10 = homedevelopcode
Path20 = home\develop\code
- 以字符串中含有 / 的第一个开始拼接:
print(“1:”,os.path.join(‘aaaa’,’/bbbb’,‘ccccc.txt’))1: /bbbb/ccccc.txt
以下基于D:\ProgramData\Anaconda3\envs\py37\python.exe C:/Users/Administrator/PycharmProjects/PYTORCH/Deep_eye/Pytorch_Camp_master/hello_pytorch/lesson/lesson-12/path_test.py
t = os.path.abspath(__file__)
print(t)
>>>C:\Users\Administrator\PycharmProjects\PYTORCH\Deep_eye\Pytorch_Camp_master\hello_pytorch\lesson\lesson-12\path_test.py
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
print(BASE_DIR)
>>>C:\Users\Administrator\PycharmProjects\PYTORCH\Deep_eye\Pytorch_Camp_master\hello_pytorch\lesson\lesson-12
os.path.dirname(os.path.abspath(__file__))与os.path.abspath(os.path.dirname(__file__))没什么区别
hello_pytorch_DIR = os.path.abspath(os.path.dirname(__file__))
print(hello_pytorch_DIR)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
print(BASE_DIR)
>>>C:\Users\Administrator\PycharmProjects\PYTORCH\Deep_eye\Pytorch_Camp_master\hello_pytorch\lesson\lesson-12
>>>C:\Users\Administrator\PycharmProjects\PYTORCH\Deep_eye\Pytorch_Camp_master\hello_pytorch\lesson\lesson-12
print(os.path.sep)
>>>\
hello_pytorch_DIR = os.path.abspath(os.path.dirname(__file__)+os.path.sep+"..")
print(hello_pytorch_DIR)
hello_pytorch_DIR = os.path.abspath(os.path.dirname(__file__)+os.path.sep+".."+os.path.sep+"..")
print(hello_pytorch_DIR)
>>>C:\Users\Administrator\PycharmProjects\PYTORCH\Deep_eye\Pytorch_Camp_master\hello_pytorch\lesson
>>>C:\Users\Administrator\PycharmProjects\PYTORCH\Deep_eye\Pytorch_Camp_master\hello_pytorch