如果
conf是Python软件包,则可以使用
pkgutil.get_data():
import pkgutildata = pkgutil.get_data("conf", "constants.cfg")
或是否
setuptools已安装–
pkg_resources.resource_string():
import pkg_resourcesdata = pkg_resources.resource_string('conf', 'constants.cfg')
如果
constants.cfg不在软件包中,则将其路径作为命令行参数传递,或者将其设置为环境变量(例如)
CONFIG_MANAGER_CONSTANTS_PATH,或者从一组固定的默认路径(例如)中读取
os.path.expanduser("~/.config/ConfigManager/constants.cfg")。要查找放置用户数据的位置,可以使用
appdirsmodule。
os.getcwd()如果您可能
ConfigManager.py从其他目录运行,则不能使用该函数返回当前工作目录。相对路径
"../../..."由于相同的原因而行不通。
如果可以确定
ConfigManager.py和
constants.cfg在文件系统中的相对位置不会改变:
import inspectimport osimport sysdef get_my_path(): try: filename = __file__ # where we were when the module was loaded except NameError: # fallback filename = inspect.getsourcefile(get_my_path) return os.path.realpath(filename)# path to ConfigManager.pycm_path = get_my_path()# go 6 directory levels upsp_path = reduce(lambda x, f: f(x), [os.path.dirname]*6, cm_path)constants_path = os.path.join(sp_path, "conf", "constants.cfg")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)