Python 获取文件路径、项目路径

Python 综合 专栏收录该内容
62 篇文章 0 订阅

____tz_zs

总结

__file__
在IDE中获取的是绝对路径,在终端启动时,启动位置是本模块,则为相对路径,由外部模块调用则获取的是未经解析的绝对路径。

sys.path[0]
忠实的表示启动的文件所在的路径

os.getcwd()
获取的是工作空间的路径。IDE中可以设置working directory,终端启动时则是指你cd到的那个路径下。

os.path.abspath(os.path.split(os.path.abspath(os.path.realpath(__file__)))[0] + “/…/”)
此方法是我写的获取项目绝对路径的工具方法。注意此文件的位置固定为项目的util文件夹下。

补充:
sys.argv
是调用脚本时使用的路径,list格式。是调用python命令的时候的第一个参数。
如,在ide启动时,ide默认配置的参数如图
在这里插入图片描述

['/home/zmate/tzzs/mytz/development/test_start.py']

在终端启动

:~/tzzs/mytz/development$ python test_start.py 
['test_start.py']
:~/tzzs/mytz$ python development/test_start.py
['development/test_start.py']

使用对比demo

项目名称
mytz
项目目录结构
development/test_start.py
util/tool_get_project_path.py

代码 tool_get_project_path.py

#!/usr/bin/python2.7
# -*- coding:utf-8 -*-

"""
@author:    tzzs
"""
import os
import sys


def get_project_path():
    print(__file__)  # 此py文件所在的路径
    print(sys.path[0])  # 启动的py文件所在的路径
    print(os.getcwd())  # 工作空间的路径(working directory),默认为启动的py文件所在路径,但ide中可以自定义设置。
    project_path = os.path.split(os.path.abspath(os.path.realpath(__file__)))[0] + "/../"
    print(os.path.abspath(project_path))


if __name__ == '__main__':
    get_project_path()

代码 test_start.py

#!/usr/bin/python2.7
# -*- coding:utf-8 -*-

"""
@author:    tzzs
"""
import sys

reload(sys)
sys.setdefaultencoding('utf-8')
sys.path.append(sys.path[0] + "/../")

from util.tool_get_project_path import get_project_path

get_project_path()

IED启动

tool_get_project_path.py

直接启动,此时默认工作目录为 /home/user/tzzs/mytz/util

/home/user/tzzs/mytz/util/tool_get_project_path.py
/home/user/tzzs/mytz/util
/home/user/tzzs/mytz/util
/home/user/tzzs/mytz

修改工作目录(working directory)为 /home/user/tzzs/mytz/

/home/user/tzzs/mytz/util/tool_get_project_path.py
/home/user/tzzs/mytz/util
/home/user/tzzs/mytz
/home/user/tzzs/mytz

test_start.py

直接启动,此时默认工作目录为 /home/user/tzzs/mytz/development

/home/user/tzzs/mytz/util/tool_get_project_path.pyc
/home/user/tzzs/mytz/development
/home/user/tzzs/mytz/development
/home/user/tzzs/mytz

修改工作目录(working directory)为 /home/user/tzzs/mytz/

/home/user/tzzs/mytz/util/tool_get_project_path.pyc
/home/user/tzzs/mytz/development
/home/user/tzzs/mytz
/home/user/tzzs/mytz

使用终端启动

tool_get_project_path.py

在文件位置启动

:~/tzzs/mytz/util$ python tool_get_project_path.py
tool_get_project_path.py
/home/user/tzzs/mytz/util
/home/user/tzzs/mytz/util
/home/user/tzzs/mytz

在项目根目录启动

:~/tzzs/mytz$ python util/tool_get_project_path.py
util/tool_get_project_path.py
/home/user/tzzs/mytz/util
/home/user/tzzs/mytz
/home/user/tzzs/mytz

test_start.py

在文件位置启动

:~/tzzs/mytz/development$ python test_start.py 
/home/user/tzzs/mytz/development/../util/tool_get_project_path.pyc
/home/user/tzzs/mytz/development
/home/user/tzzs/mytz/development
/home/user/tzzs/mytz

在项目根目录启动

:~/tzzs/mytz$ python development/test_start.py 
/home/user/tzzs/mytz/development/../util/tool_get_project_path.pyc
/home/user/tzzs/mytz/development
/home/user/tzzs/mytz
/home/user/tzzs/mytz
  • 3
    点赞
  • 2
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值