python获取当前文件和目录路径的方法详解

2025-01-02 15:50

本文主要是介绍python获取当前文件和目录路径的方法详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp...

例子的目录结构如下:

python获取当前文件和目录路径的方法详解

当前目录为pythontest,目录下有两个文件夹1,2和两个文件test.py,test1.ipynb,文件夹1下面有一个tejavascriptst1.txt,文件夹2下面的test2.txt是指向文件夹1下test1.txt的软链接。 后面程序是写在test1.py文件中的

1、获取当前文件路径

  • 通过python内置关键字__file__获取
import sys
import os

if __name__ == "__main__":
    print("__file__ :", __file__)
    print(os.path.abspath(__file__))
    print(os.path.realpath(__file__))

进入pythontest目录下,终端运行命令python test1.py,输出结果:

python获取当前文件和目录路径的方法详解

  • 通过执行程序的命令第一个参数sys.argv[0]获取
import sys
import os

if __name__ == "__main__":
    print("第一个参数:", sys.argv[0])
    print(os.path.abspath(sys.argv[0]))
    print(os.path.realpath(sys.argv[0]))

进入pythontest目录下,终端运行命令python test1.py,输出结果:

python获取当前文件和目录路径的方法详解

2、获取当前文件所在目录

可通过如下几种方式获取:

import sys
import os

if __name__ == "__main__":
    print(os.path.dirname(__file__))
    print(os.getcwd())
    print(os.path.abspath('.'))
    print(os.path.abspath(os.curdir))

进入pythontest目录下,终端运行命令python test1.py,输出结果:

python获取当前文件和目录路径的方法详解

3、os.path.abspath和os.path.realpath有什么区别?

对于普通文件,两者没什么区别,都是返回当前文件的绝对路径,如上面的test1.py;但是若文件是软连接或者快捷方式时,javascriptos.path.realpath返回真实文件的路径,如下面的例子,文件夹2下面的test2.txt是指向文件夹1下test1.txt的软链接,两个函数则返回不同的路径。

import sys
import os

if __name__ == "__main__":
    print(os.path.abspath("/home/jovyan/project/pythontest/2/test2.txt"))
    print(os.path.realpath("/home/jovyan/project/pythontest/2/test2.txt"))

进入pythontest目录下,终端运行命令python test1.py,输出结果:

python获取当前文件和目录路径的方法详解

4、使用os.path.abspath和os.path.realpath需注意

使用这两个函数时需注意路径需要完整,不然会返回一个错误的’绝对路径’,如下,遍历当前目录下所有文件:

import sys
import os

if __name__ == "__main__":
    for i in os.listdir(os.path.dirname(__file__)):
        print("1级目录:", i)
        if os.path.isdir(os.path.join(os.path.dirname(__file__), i)):
            for j in os.listdir(os.path.join(os.path.dirname(__file__), i)):
                print("2级目录:", j)
                print(os.path.abspath(j))      # 这里j不是一个完整路径,只是一个文件名,结果会返回一个错误的'绝对路径'
                print(os.path.realpath(j))
                print(os.path.abspath(os.path.join(os.path.dirname(__file__), i, j)))
                print(os.path.realpath(os.path.join(os.path.dirname(__file__), i, j)))

进入pythontest目录下,终端运行命令python test1.py,输出结果:

python获取当前文件和目录路径的方法详解

5、关于sys.path

sys.path返回一个list,python中对list的操作均可以对sys.path操作,常见有insert, append这些。

import sys
import os

if __name__ == "__main_China编程_":
 http://www.chinasem.cn   print("==> before:")
    print(sys.path)
    sys.path.insert(0, os.path.dirname(__file__))   #将当前文件目录插入在path搜索路径的第一个位置
    sys.path.append(os.path.dirname(__file__))  #将当前文件目录添加在path搜索路径的最后
    print("==> after:")
    print(sys.path)

进入pythontest目录下,终端运行命令python test1.py,输出结果:

python获取当前文件和目录路径的方法详解

总结 

到此这篇关于python获取当前文件和目录路径的文章就介绍到这了,更多相关python获取当前文件和目录路径内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于python获取当前文件和目录路径的方法详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1152900

相关文章

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过