广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中如何导入父文件夹中的模块并读取当前文件夹内的资源
  • 203
分享到

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

2023-06-16 04:06:35 203人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python中如何导入父文件夹中的模块并读取当前文件夹内的资源”,在日常操作中,相信很多人在Python中如何导入父文件夹中的模块并读取当前文件夹内的资源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对

这篇文章主要介绍“python中如何导入父文件夹中的模块并读取当前文件夹内的资源”,在日常操作中,相信很多人在Python中如何导入父文件夹中的模块并读取当前文件夹内的资源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中如何导入父文件夹中的模块并读取当前文件夹内的资源”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在某些特殊情况下,我们的 Python 脚本需要调用父目录下的其他模块。例如:

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

在编写 GNE 的测试用例时,有一个脚本 generate_new_cases.py放在 tests文件夹中。而 tests 文件夹与 gne  文件夹放在同一个位置。其中 gne 文件夹是一个包。我现在需要从generate_new_cases.py 文件中导入 gne  里面的一个类GeneralNewsExtractor。

为了简化问题,我单独写了一个演示的样例。它的文件结构与每个文件中的内容如下:

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

现在,我直接在 scripts 文件夹里面运行run.py会报错,提示从包的最顶层之外相对导入。

现在,我们改一下代码,尝试在scripts 文件夹的父文件夹中运行代码,发现还是会报错:

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

我们再来改一下代码,在 scripts 文件夹中,把父文件夹加入到sys.path中:

import sys sys.path.append('..')

运行效果如下图所示:

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

这种写法,当我们在scripts  文件夹里面运行run.py时,确实已经正常了。但是如果我们在scripts文件夹的父文件夹再运行代码,又不对了,如下图所示:

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

为了检查这个原因,我们打印一下sys.path:

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

大家有没有发现一个很不和谐的东西:其他路径都是绝对路径,就最后我们加了两个点看起来很违和。那如果我们把这两个点换成绝对路径呢?于是尝试获取当前正在运行的这个文件的绝对路径:

import sys from pathlib import Path current_folder = Path(__file__).absolute().parent father_folder = str(current_folder.parent) sys.path.append(father_folder)

运行效果如下图所示:

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

导入模块已经正常了,但是读取资源文件又异常了。

这是因为,import导入模块时,是根据sys.path中的路径来寻找的。但是读取资源文件的时候,相对文件路径是相对于工作区来寻找的。

现在我们在~/test_import_father_module执行python3  scripts/run.py,那么当前的工作区就是~/test_import_father_module。而由于资源文件是在scripts文件夹中的,所以就找不到。

所以我们还需要修改一下工作区:

import os from pathlib import Path current_folder = Path(__file__).absolute().parent os.chdir(str(current_folder))

运行效果如下图所示:

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

现在无论是读取资源文件还是导入模块,都已经正常了。

我们再回到 scripts 文件夹中执行看看:

python中如何导入父文件夹中的模块并读取当前文件夹内的资源

发现也能正常执行。

总结涉及到模块导入相关的环境,可以通过在sys.path添加绝对路径来解决。涉及到读取资源文件的相关环境,可以通过使用os.chdir修改工作区为另一个绝对路径来解决。

到此,关于“python中如何导入父文件夹中的模块并读取当前文件夹内的资源”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: python中如何导入父文件夹中的模块并读取当前文件夹内的资源

本文链接: https://www.lsjlt.com/news/282335.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中如何导入父文件夹中的模块并读取当前文件夹内的资源
    这篇文章主要介绍“python中如何导入父文件夹中的模块并读取当前文件夹内的资源”,在日常操作中,相信很多人在python中如何导入父文件夹中的模块并读取当前文件夹内的资源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-16
  • python读取文件夹中图片的图片名并写入excel表格
    有的时候,我们需要读取图片名,写入表格中,以便结合图片的其他信息,做进一步的分析。 假如,现在要读取存放在E盘的origin_file文件夹,读取里面的图片名将其写入到excel文件...
    99+
    2022-11-12
  • python如何读取文件夹中图片的图片名并写入excel表格
    本篇文章为大家展示了python如何读取文件夹中图片的图片名并写入excel表格,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有的时候,我们需要读取图片名,写入表格中,以便结合图片的其他信息,做进一...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作