我正在创建一个具有以下结构的包
/package
__init__.py
/sub_package_1
__init__.py
other_stuff.py
/sub_package_2
__init__.py
calc_stuff.py
/results_dir
我想确保calc_stuff.py
将结果保存到/results_dir
,除非另有说明(是的,我不完全确定在我的包中有结果目录是最好的主意,但是它现在应该运作良好)。但是,由于我不知道将从哪个机器运行calc_stuff
,我需要使用该软件包,或至少my_calc.py
来了解它的保存位置。
到目前为止,我尝试了两种方法:
from os import path
saved_dir = path.join(path.dirname(__file__), 'results_dir')
和
from pkg_resources import resource_filename
filepath = resource_filename(__name__, 'results_dir')
只给了我相对于包根的路径。
我需要做些什么来确保声明:
pickle.dump(my_data,open(os.path.join(full_path,
'results_dir',
'results.pkl'), 'wb')
是否会将pickle文件保存到results_dir
?
答案 0 :(得分:0)
我不完全确定我的包中有结果目录是最好的主意,我要么:)
但是,如果要在subpackage2中的模块中放置类似下面的函数,它应该返回一个路径,包括(模块路径减去文件名,'results_dir',你传递函数作为参数的文件名):< / p>
def get_save_path(filename):
import os
return os.path.join(os.path.dirname(__file__), "results_dir", filename)
C:\Users\me\workspaces\workspace-oxygen\test36\TestPackage\results_dir\foo.ext