os.path.dirname(__file__)、os.path.abspath(__file__)、os.path.join()的用法

参考博客:

我在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

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
  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

☞源仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值