繁体   English   中英

是否可以在 python 模块中存储泡菜文件?

[英]Is possible to store a pickle file inside a python module?

我正在构建一个 python 模块,我需要存储一个泡菜文件以使模块脱机工作。

我的模块具有以下结构

在此处输入图像描述

例如,在“macinfo.py”文件中,我使用如下的 open() function 来存储所有公司:

def all_companies() -> List[Company]:
    """
    Get all companies stored in the pickle file.

    :return: A list of Company instances
    """

    return pickle.load(open("data/companies.pickle", "rb"))

当我尝试调用 function

all_companies()

在名为“macinfo.py”的文件中它可以工作,但是当我在“test.py”中调用相同的 function 时,它显然会引发异常:

FileNotFoundError: [Errno 2] No such file or directory: 'data/companies.pickle'

我怎样才能避免这种情况?

编辑:我也尝试使用os.path.abspath()但引发了相同的异常。

我通过使用特殊变量__file__找到了解决方案。

在文件“macinfo.py”中,我使用以下代码来确定“companies.pickle”的存储位置

path_1 = "/".join(str(__file__).split("\\")[0:-1])
path_2 = "/data/companies.pickle"
full_path = path_1 + path_2 if path_1 else "data/companies.pickle"

然后我使用full_path如下

def all_companies() -> List[Company]:
    """
    Get all companies stored in the pickle file.

    :return: A list of Company instances
    """

    return pickle.load(open(full_path, "rb"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM