初步:
我在Windows 10上安装了Anaconda 3,并在Python路径上放置了一个文件夹folder_default
。我不确定这是否是正确的术语,所以要明确:无论我的Python脚本在哪里,如果我有一行代码import myFile
,那么代码行如果myFile.py
中有folder_default
,则会成功。
我的问题:
在folder_default
中,我有:
useful_files
的子文件夹,其中包含一个名为useful_file_1.txt
的文本文件。my_misc.py
。 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脚本?
如果问题不清楚,请告诉我 - 我试着写一个假的,最小版本的设置实际上在我的电脑上,希望这会简化一些事情,但我可以改变它,如果那样的话实际上让事情变得更加混乱。
感谢。
答案 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)