Python包子目录抽象

时间:2012-06-14 09:41:10

标签: python packages abstraction

目前有以下方案,我已经指定了一个名为/ source的软件包,其中包含一个python文件get.py,它从Internet上提取数据 并生成一系列文本存储在名为/ txt的目录中的文件,并以数据结构返回数据

final.py可以:

1)导入源,并调用get.py,它将返回存储在数据结构中的文本文件的内容。 get.py()还将数据结构的内容写入/ text / * .txt

2)检索/source/text/data.txt而不调用get.py,它应具有相同的行为,但信息来自之前调用get.py(离线模式)

final.py
/source
    __init__.py
    get.py #returns a data structure and writes to /text/data.txt
        /text
            data.txt
            data1.txt
            data2.txt

虽然这一切都很好,但我不禁想到我违反了一些重要的抽象规则,主要是我检索/source/text/data.txt而无需导入源包。如果是这种情况,为什么要创建包含 init .py的软件包呢?如何组织上述方案的python包?

1 个答案:

答案 0 :(得分:0)

您的主要“违规”是您的数据现在与您的代码位于相同的目录中。这些不应混合:应用程序应将其数据存储在其他位置(在配置目录或指定目录中)。

我建议按如下方式组织:

final.py
/source
    __init__.py
    get.py
/text
    data.txt
    data1.txt
    data2.txt

您现在可以通过执行final.py(可能带参数)来执行所有操作,然后可以导入源或数据并执行它需要做的事情。