尝试通过从该子目录导入的模块读取子目录中的文件

时间:2016-06-22 13:58:56

标签: python

所以我有一个程序,其中一个主模块位于包含两个其他文件夹的文件夹中。这两个文件夹中的每一个都有一个我已经成功导入的模块,但是这些模块中的每一个都应该能够从各自的文件夹中打开和读取文件,但它无法找到它的文件。应该导入。我认为它是在主目录中查找要打开的文件,如何让每个模块看起来都在自己的文件夹中打开文件?

3 个答案:

答案 0 :(得分:0)

我的建议是考虑使用os.path模块来确保在打开文件时使用正确的路径。以下是一些您可能会发现有用的操作:

  • os.path.abspath(path)path转换为绝对路径。
  • os.path.dirname(path)提供path
  • 目录的名称
  • os.path.join(path1, path2)结合了path1path2

Python 2的文档:https://docs.python.org/2/library/os.path.html#module-os.path Python 3的文档:https://docs.python.org/3/library/os.path.html#module-os.path

答案 1 :(得分:0)

如果我正确理解了这个问题,您是否希望能够从系统中的任何目录导入文件?如果是这种情况,您可以使用库(取决于您的python版本),例如importlib.util,或imp用于python 2.

您可以在此处找到文档:https://docs.python.org/3/library/importlib.html

在这里:https://docs.python.org/2/library/imp.html

答案 2 :(得分:0)

听起来可能有更好的方法来做你想做的事情,但是如果没有附加信息,可以在__file__变量中找到模块的位置(用于文件操作):

mydir = os.path.dirname(__file__)