访问相对于导入的python模块的文件

时间:2016-09-07 02:08:13

标签: python import relative-path python-import

初​​步:

我在Windows 10上安装了Anaconda 3,并在Python路径上放置了一个文件夹folder_default。我不确定这是否是正确的术语,所以要明确:无论我的Python脚本在哪里,如果我有一行代码import myFile,那么代码行如果myFile.py中有folder_default,则会成功。

我的问题:

folder_default中,我有:

  1. 一个名为useful_files的子文件夹,其中包含一个名为useful_file_1.txt的文本文件。
  2. 一个名为my_misc.py
  3. 的python脚本

    my_misc.py有一行类似于:np.loadtxt('useful_files/useful_file_1.txt')。如果我在import my_script以外的位置的python文件中使用folder_default,则此行不起作用,因为useful_files/useful_file_1.txt不是相对于导入{{1}的python文件的文件夹路径}。如果可以避免,我不想开始使用全局文件路径。

    如何使用相对于导入的python模块的文件路径访问文件,而不是相对于导入该模块的python脚本?

    如果问题不清楚,请告诉我 - 我试着写一个假的,最小版本的设置实际上在我的电脑上,希望这会简化一些事情,但我可以改变它,如果那样的话实际上让事情变得更加混乱。

    感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用getfile模块的inspect方法获取当前模块的路径inspect.getfile(inspect.currentframe())。 例如:

# File : my_misc.py
import os, inspect

module_dir_path = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # get path to the directory of current module
useful_file_path = os.path.join(module_dir_path,'useful_files','useful_file_1.txt')
# path stored in useful_file_path. do whatever you want!

np.loadtxt(useful_file_path)