Python获取文件夹和文件的路径

前言 :最近学习logging日志输出部分的内容,其中涉及获取文件目录函数模块,决定把这里熟悉并梳理一下

这些路径还是获取都是来至于python自动的内置函数os.path模块,这里只是介绍了常用到的几种方式,如需更详细的请去官网学习:http://docs.python.org/library/os.path.html

先看下我的目录结构:F:\project\myDB\path.py,,如图所示

《Python获取文件夹和文件的路径》

print(“__file__=%s” % __file__)

__file__=F:/project/myDB/path.py

(1)获取当前程序目录的绝对路径

path=os.path.realpath(__file__)#获取脚本所在的绝对路径

path1=os.path.abspath(__file__)#获取脚本所在的绝对路径

print(“path”,path)

print(“path1”,path1)

打印结果都是一样的:F:\project\myDB\path.py

那么上面两个都是绝对路径,那有什么区别呢,我也挺好奇的,那么往下看之前的需要补充一点一会要用到的只是,那就是linux下的ln命令,就在这里单独讲解一下,不再单独写简书讲解,如果你已经很熟悉linux下的这些命令了,可以跳过

正文 :linux下的ln是一个比较重要的命令,可以为文件或者文件夹建立同步连接,就像windows的快捷方式一样

具体语法:sudo ln -s 源文件 目标文件 

其中-s代表是软连接,那么什么是软连接和和硬链接呢,这里也不介绍了,可以去查看资料

删除连接:sudo rm -rf link_name

为了弄清上面两个绝对路径的区别,我们进入linux 系统

使用命令在/usr/local/下面创建一个名称为path文件夹,并在他下面创建一个test的文本文件

sudo mkdir path

sudo touch test

接着我们使用刚才介绍的ln命令在/usr/local的位置创建一个text文件的软连接

sudo ln -s /usr/local/path/test /usr/local/test1

创建完之后,查看test1的内容,你会发现和path文件夹下面的test内容一样

cat test1   

那么接着进入在linux下使用命令python,进入python模式,输入以下命令,看下面的命令是不是发现区别了呢

realpath命令是显示软连接内容源头的真正目录

abspath命令是显示软连接的所在目录

《Python获取文件夹和文件的路径》

(2)、获取文件当前所在目录的路径(F:\project\myDB),这里只介绍最常用的两种方式

 1、os.path.split(os.path.realpath(__file__))[0]  取的是__file__所在文件path.py的所在目录

2、os.getcwd()

3、os.path.dirname(__file__)   《=》 os.path.dirname(os.path.realpath(__file__))

这三种方式输出都是:F:\project\myDB

那么os.getcwd()和os.path.dirname(os.path.realpath(__file__)有什么区别呢?

看下我的目录结构:F:\project\myDB\myPython\path.py

运行完成后,打印目录内容一样,如图所示:

《Python获取文件夹和文件的路径》

接着在该脚本的上一级创建一个脚本文件path1,运行后看出不一样的地方了吧如图所示:

《Python获取文件夹和文件的路径》

os.path.dirname(os.path.realname(__file__))获取的__file__所在路径

os.getcwd()是获取的当前脚本所在路径

(3)、获取当前文件所在目录的上一级文件路径(F:\project)

os.path.dirname(os.path.dirname(__file__))#获取文件所在目录的上一级目录

os.path.abspath(os.path.dirname(os.getcwd()))#获取文件所在目录的上一级目录

    原文作者:测试_机器猫
    原文地址: https://www.jianshu.com/p/cc8387b585ce
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞