假设我正在设计一个工具foobubzzle(foobubzzle的确切工作是设置SRPM文件,以便将各种代码交叉编译到它们自己的分隔前缀目录中,但这并不重要)。我希望foobulzzle接受一个输入文件(buzzle_input),该文件由一个(智能的、代码敏感的)客户机指定,客户机将告诉foobulzzle他们希望它如何执行这些操作。在
我正在用Python编写foobulzzle,用户可以使用Python或bash提供buzzle_输入配置信息。你会选哪一个?你将如何实施?我希望Python需要一些全局环境变量,这些变量可能需要通过执行其他脚本来设置,可能需要从buzzle_输入脚本中执行。在
这不是生产代码,只是一个内部工具,一小部分开发人员将使用它来帮助管理C/C++ +FORTRAN代码的一个相当大的交叉编译环境。在
我的最佳猜测是使用某种方法包装foobulzzle脚本,以便$PYTHONPATH变量获取当前工作目录,并将foobuskle_输入脚本导入并按设置执行。有没有更干净的方法不包装foobulzzle?执行bash脚本的任何特殊注意事项(假设安全性不是真正的问题,并且这些脚本不会以系统管理员权限运行)。在
我对上下文的理解是,您有一个Python脚本,它执行各种make或autoconf类操作,并且您希望允许客户机为foobulzzle编写自己的
Makefile
。在我不明白目录的问题。导入将始终搜索本地目录?当您跳来跳去更改当前工作目录时,您可以
os.chdir()
,就像make一样。在把它作为bash脚本有一个优点,即没有人需要学习Python,特别是类似Python的foobuskle DSL。但它的功能要小得多:基本上你只能发送和接收文本。不能编写bash代码可以调用的支持函数(除非也将其生成到bash中),正确的错误处理可能会很困难,等等
根据配置需要的强大程度,我将使用Python。我可能会加载文件本身并在其上使用
eval()
,从而完全控制其命名空间。例如,我可以传递各种实用程序和助手函数,或者提供它们可以直接操作的对象。在如果它非常简单,指定标志和名称,诸如此类的事情,那么您可以将其作为.ini文件,并在标准库中使用
ConfigParser()
。在相关问题 更多 >
编程相关推荐