我有一组用Python编写的脚本。它们都可以独立执行。但是,在大多数情况下,它们应该一个接一个地执行,因此有一个MainScript.py
以适当的顺序调用它们。每个脚本都有一些可配置的变量(我们将它们称为Root_Dir
、Data_Dir
和{
我试着让Config.py
按照this thread包含它们,但是import Config
生成{
然后我尝试依赖变量继承:在调用所有其他变量的MainScript.py
中定义它们一次。这是可行的,但是我意识到每个脚本都不能独立运行。为了解决这个问题,我尝试在MainScript.py
和其他文件中添加useGlobal=True
:
if (useGlobal is None or useGlobal==False):
# define all variables
但当脚本独立运行时,这将失败:NameError: name 'useGlobal' is not defined
。解决方法是定义useGlobal并在独立于MainScript.py
运行脚本时将其设置为False。有更优雅的解决方案吗?在
最好的方法是使用主目录(
~/.config/yourscript/config.json
)中的配置文件。在然后,可以在启动时加载文件,并在文件不存在时提供默认值:
示例(配置.py)公司名称:
对于配置文件,使用json而不是python是个好主意,因为它使使用脚本的人更容易编辑。在
其思想是python希望访问文件-包括配置.py-主要作为模块的一部分。在
好的一点是,Python使构建模块(即Python包)变得非常容易——初始化它可以通过创建一个
在每个目录中作为模块、子模块、子模块等的文件。在
因此,如果您已经创建了这个文件,那么您的导入应该通过。在
如果您还有其他问题,请看优秀的python documentation。在
正如cleros所建议的,ConfigParser module似乎是最接近我想要的东西(每个文件中有一行语句,它将设置多个变量)。在
相关问题 更多 >
编程相关推荐