OS模块中获取当前文件的绝对路径的相关方法

os.path.realpath(file)

作用:获取当前执行py脚本的绝对路径(在当前工作目录下的绝对路径)

file : 表示当前文件的本身,一般值是当前文件的相对路径

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py

在main.py 文件中运行以下代码:

dir_path = os.path.realpath(__file__)
print(__file__)
print(dir_path)

>> main.py
>> /home/study_explore/cnn_VMASK/main.py

os.path.dirname(path)

作用: 去掉文件名(或者文件夹),并返回该文件所在的目录

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py,在main.py 中有如下代码:

dir_path = os.path.realpath(__file__)
print(os.path.dirname(dir_path))
print(os.path.dirname(os.path.dirname(dir_path)))

>> /home/study_explore/cnn_VMASK
>> /home/study_explore

TIPS: os.path.realpath(file) 和 os.path.dirname(path) 结合起来使用就可以的到在工作目录下的当前文件所在目录的绝对路径。

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py,在main.py 中有如下代码:

dir_path = os.path.dirname(os.path.realpath(__file__))
print(dir_path)

>> /home/study_explore/cnn_VMASK

os.path.abspath()

作用: 返回指定的py脚本的绝对路径

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py,在main.py 中有如下代码:

print(os.path.abspath(__file__))
print(os.path.abspath(".")) #当前文件所在目录的绝对路径
print(os.path.abspath("..")) #当前文件的上级目录的绝对路径

>> /home/study_explore/cnn_VMASK/main.py
>> /home/study_explore/cnn_VMASK
>> /home/study_explore

os.path.basename()

作用: 返回当前所在脚本的文件名称

例如:

print(os.path.basename(__file__))

>> main.py

os.getcwd()

作用: 返回当前进程的工作目录。

工作目录:每一个可运行的程序都会有一个工作目录,而不是直接在根目录下运行的,该程序的相对路径就是指相对于工作目录。

相对应的 os.chdir() –> 设置当前进程的工作目录

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py,在main.py 中有如下代码:

dir_path = os.path.dirname(os.path.realpath(__file__))
os.chdir(dir_path)
print(os.getcwd())

>> /home/study_explore/cnn_VMASK

os.path.join()

作用: 文件路径的拼接

os.path.split()

作用: 分割全路径名中的目录和文件名; 如果给出的是一个目录和文件名(a/b/c.py)或者(a/b/c),则输出路径和文件名((“a/b”,”c.py”)) 或者 ((“a/b”,”c”)) ; 如果给出的是一个目录名(a/b/c),则输出路径和为空文件名((“a/b/c”,””))

也就是说,它 仅仅是以 全路径名 中最后一个 ‘/’ 作为分隔符,分隔后,将索引为0的视为目录(路径),将索引为1的视为文件名

Original: https://www.cnblogs.com/jack-nie-23/p/16557550.html
Author: jacknie23
Title: OS模块中获取当前文件的绝对路径的相关方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582372/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • js笔记之switch-case

    switch 语句来选择要执行的多个代码块之一。switch 不能处理大于小于的 工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比…

    Linux 2023年6月13日
    091
  • Debian 开机自动挂载磁盘

    首先要知道自己的磁盘是什么格式的, 常见的有 ext4 Fat32 ntfs exfat ntfs 和 exfat 磁盘格特殊说明, 因为需要额外支持才能挂载. 查看磁盘和分区的命…

    Linux 2023年6月7日
    0100
  • 【原创】Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化

    背景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. –…

    Linux 2023年6月8日
    098
  • 多个USB转串口设备区分方法

    当计算机或者其他USB主机上使用多个USB转串口设备时,会遇到多个串口无法与具体的串口设备对应起来的问题,包括更换不同USB端口串口序号发生改变,多个设备USB插拔顺序不同导致串口…

    Linux 2023年6月7日
    066
  • Web Api单元测试写法

    例如我们在Web Api项目中有个Controller 如果你在单元测试中直接调用 SomeController 的Get()方法,那么你将会收到一个Exception提示Requ…

    Linux 2023年6月14日
    089
  • OpenStack glance对接swift

    配置 切换环境变量 [root@controller ~]# source keystonerc_admin 复制glance配置文件备份 [root@controller ~(k…

    Linux 2023年6月8日
    090
  • 冒泡排序

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月8日
    0112
  • 2021年3月-第01阶段-Linux基础-Linux系统概念-Linux命令

    Linux系统基本概念 图形界面: Ctrl+Shift +号 //调整命令终端变大 Ctrl – 号 //调整命令终端变小 命令终端: ~ 家目录:用户的私有场所,其…

    Linux 2023年6月8日
    0104
  • Ubuntu系统报错The system is running in low-graphics mode

    我遇到过两次这种请况,这次解决了。很nice! 在csdn上搜到的大部分操作是: 鼠标进入系统 使用快捷键 Ctrl+Alt+F1 进入用户 输入密码 然后按照以下代码进行 cd …

    Linux 2023年5月27日
    0105
  • 实验3: OpenFlow协议分析实战

    实验三: OpenFlow协议分析实战 (一) 基本要求 1.搭建拓扑、IP配置、主机通信 1.1 搭建拓扑 1.2 IP配置 1.3 代码 #!/usr/bin/env pyth…

    Linux 2023年6月7日
    0101
  • .NET客户端实现Redis中的管道(PipeLine)与事物(Transactions)

    序言 Redis中的管道(PipeLine)特性:简述一下就是,Redis如何从客户端一次发送多个命令,服务端到客户端如何一次性响应多个命令。 Redis使用的是客户端-服务器模型…

    Linux 2023年5月28日
    0120
  • Python导入cx_Oracle报错

    系统环境:RHEL5.4 python2.5(手动编译安装,系统带有2.4版本) 在使用python脚本访问数据库时,需要导入cx_Oracle模块 $>>>im…

    Linux 2023年6月14日
    082
  • Debian修改固定IP

    注意:此配置文件更改权限应为root权限方可修改成功 1.设置固定IP地址、网关 命令: cp /etc/network/interfaces /etc/network/inter…

    Linux 2023年6月13日
    077
  • MybatisPlus拓展——实现多数据源操作

    多数据源 适用:一般工作时候会有多个数据库,每个库对应不同的业务数据。程序如果每次数据都访问同一个数据库,该数据库压力很大访问会很慢。 1、导入依赖 com.baomidou dy…

    Linux 2023年6月7日
    080
  • centos7启动docker容器时提示Error response from daemon: Unknown runtime specified docker-runc

    记录centos7启动docker 过程 csharp;gutter:true; systemctl start docker 启动docker 程序docker start xx…

    Linux 2023年6月8日
    099
  • Windows Server OS 系列安装

    Windows Server OS 系列安装 Windows Server 2003 Windows Server 2008 Windows Server 2012 Windows…

    Linux 2023年6月13日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球