python文件读取和导包的绝对路径、相对路径详解

 更新时间:2022年04月26日 10:00:27   作者:hellobigorange  
每次在读或写文件时,获取脚本文件的绝对路径和相对路径时很容易搞混,下面这篇文章主要给大家介绍了关于python文件读取和导包的绝对路径、相对路径的相关资料,需要的朋友可以参考下

文件目录层级

一、文件读取的绝对路径和相对路径

用相对路径和绝对路径读取上一层目录的文件、下一层目录的文件及读取同层级的文件。

# @File : platform.py.py

"""1、绝对路径读取文件"""
with open(r"C:\Users\chengjingd\PycharmProjects\pythonProject13\testa\platform\myprocessor\test2.txt", 'r') as f:
    print(f.read())
    
"""2、相对路径读取文件"""
# 读取下一层目录的test2.txt文件
with open("myprocessor/test2.txt", 'r') as f:
    print(f.read())

# 读取同层目录的test1.txt
with open("test1.txt", 'r') as f:
    print(f.read())

# 读取上一层目录的test.txt文件
with open("../test.txt", 'r') as f:
    print(f.read())

..表示进入上一层目录。
若在cite_f.py里读取 test.txt即上上层目录,只要将路径替换为"../../test2.txt"即可。

二、package的绝对路径及相对路径导入

绝对导入的格式为 import A.Bfrom A import B,相对导入格式为 from . import Bfrom ..A import B,.代表当前模块,..代表上层模块,...代表上上层模块,依次类推。

相对导入可以避免硬编码带来的维护问题,例如我们改了某一顶层包的名,那么其子包所有的导入就都不能用了。但是 存在相对导入语句的模块,不能直接运行,否则会有异常:

🙉相对路径运行注意事项:

在没有明确指定包结构的情况下,Python 是根据 __name__ 来决定一个模块在包中的结构的,如果是 __main__ 则它本身是顶层模块,没有包结构,如果是A.B.C 结构,那么顶层模块是 A。基本上遵循这样的原则:

如果是绝对导入,一个模块只能导入自身的子模块或和它的顶层模块同级别的模块及其子模块
如果是相对导入,一个模块必须有包结构且只能导入它的顶层模块内部的模块

2.1 导包以绝对路径导入

# @File : platform1.py.py
from testa.platform.myprocessor.myprocessor import *
# 引用同级目录的模块
from a import *
# 引用下一级目录的模块
from myprocessor.myprocessor import *
# 引用上一级目录的模块
from testa.main import *

2.2 导包以相对路径导入

"""在myprocessor.py内导入同等级目录的cite_f"""
# @File : myprocessor.py.py
from .cite_f import f
"""在上一层目录里的platform1.py调用myprocessor.py"""
# @File : platform1.py.py
from myprocessor.myprocessor import *
"""在myprocessor.py内导入同等级目录的cite_f及上层目录的platform1.py"""
# @File : myprocessor.py.py
from .cite_f import f
from ..platform1 import *
"""在上上一层目录里的main.py调用myprocessor.py"""
# @File : main.py.py
from testa.platform.myprocessor.myprocessor import *

参考引用:python的包相关的知识

模块:一组功能的组合,任何以.py结尾的都可以称作模块

包块的组合,py2要求必须有__init__.py,py3不需要

三、运行脚本的当前工作路径和绝对路径

脚本所在位置的目录为当前工作路径,无论后续调用哪个模块(子目录模块、父目录模块),当前工作路径不会变os.getcwd(),但在哪个模块写os.path.abspath(__file__)就会打印那个模块所在的工作目录。

# @File : myprocessor.py.py
import os
print("当前工作路径:",os.getcwd())
print("绝对路径:",os.path.abspath(__file__))
# @File : platform1.py.py
from myprocessor.myprocessor import *

运行脚本platform1.py会显示

当前工作路径: C:\Users\PycharmProjects\pythonProject13\testa\platform
绝对路径: C:\Users\PycharmProjects\pythonProject13\testa\platform\myprocessor\myprocessor.py
在脚本中运行示例

总结 

到此这篇关于python文件读取和导包的绝对路径、相对路径的文章就介绍到这了,更多相关python文件读取和导包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python如何利用正则表达式爬取网页信息及图片

    Python如何利用正则表达式爬取网页信息及图片

    这篇文章主要给大家介绍了关于Python如何利用正则表达式爬取网页信息及图片的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Windows8下安装Python的BeautifulSoup

    Windows8下安装Python的BeautifulSoup

    这篇文章主要介绍了Windows8下安装Python的BeautifulSoup,本文着重讲解安装中出现的错误和解决方法,需要的朋友可以参考下
    2015-01-01
  • Python机器学习入门(三)之Python数据准备

    Python机器学习入门(三)之Python数据准备

    这篇文章主要介绍了Python机器学习入门知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Python中用post、get方式提交数据的方法示例

    Python中用post、get方式提交数据的方法示例

    最近在学习使用Python,发现网上很少提到如何使用post,所以下面这篇文章主要给大家介绍了关于Python中用post、get方式提交数据的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-09-09
  • Python3 max()函数基础用法

    Python3 max()函数基础用法

    在本篇文章中我们给大家讲述了关于Python3 max()函数的基本用法以及相关知识点内容,需要的朋友们学习下。
    2019-02-02
  • 详解Scrapy Redis入门实战

    详解Scrapy Redis入门实战

    这篇文章主要介绍了详解Scrapy Redis入门实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南

    python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南

    最近在做一个项目,必须把结果保存到excel文件中,下面这篇文章主要给大家介绍了关于python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • python str转json的具体步骤

    python str转json的具体步骤

    使用Python内置的json模块,可以将str转换为JSON,本文给大家介绍python str转json的具体步骤,文中补充介绍了Python-字符串str和json格式的转换问题,感兴趣的朋友一起看看吧
    2024-01-01
  • python3两数相加的实现示例

    python3两数相加的实现示例

    这篇文章主要介绍了python3两数相加的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python使用phoenixdb操作hbase的方法示例

    python使用phoenixdb操作hbase的方法示例

    这篇文章主要介绍了python使用phoenixdb操作hbase的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02

最新评论