目前有以下方案,我已经指定了一个名为/ 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包?
答案 0 :(得分:0)
您的主要“违规”是您的数据现在与您的代码位于相同的目录中。这些不应混合:应用程序应将其数据存储在其他位置(在配置目录或指定目录中)。
我建议按如下方式组织:
final.py
/source
__init__.py
get.py
/text
data.txt
data1.txt
data2.txt
您现在可以通过执行final.py
(可能带参数)来执行所有操作,然后可以导入源或数据并执行它需要做的事情。