如何在当前目录中作为代码的一部分执行Python/bash代码?

2024-06-16 10:22:16 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我正在设计一个工具foobubzzle(foobubzzle的确切工作是设置SRPM文件,以便将各种代码交叉编译到它们自己的分隔前缀目录中,但这并不重要)。我希望foobulzzle接受一个输入文件(buzzle_input),该文件由一个(智能的、代码敏感的)客户机指定,客户机将告诉foobulzzle他们希望它如何执行这些操作。在

我正在用Python编写foobulzzle,用户可以使用Python或bash提供buzzle_输入配置信息。你会选哪一个?你将如何实施?我希望Python需要一些全局环境变量,这些变量可能需要通过执行其他脚本来设置,可能需要从buzzle_输入脚本中执行。在

这不是生产代码,只是一个内部工具,一小部分开发人员将使用它来帮助管理C/C++ +FORTRAN代码的一个相当大的交叉编译环境。在

我的最佳猜测是使用某种方法包装foobulzzle脚本,以便$PYTHONPATH变量获取当前工作目录,并将foobuskle_输入脚本导入并按设置执行。有没有更干净的方法不包装foobulzzle?执行bash脚本的任何特殊注意事项(假设安全性不是真正的问题,并且这些脚本不会以系统管理员权限运行)。在


Tags: 文件工具方法代码目录脚本bashinput
1条回答
网友
1楼 · 发布于 2024-06-16 10:22:16

我对上下文的理解是,您有一个Python脚本,它执行各种make或autoconf类操作,并且您希望允许客户机为foobulzzle编写自己的Makefile。在

我不明白目录的问题。导入将始终搜索本地目录?当您跳来跳去更改当前工作目录时,您可以os.chdir(),就像make一样。在

把它作为bash脚本有一个优点,即没有人需要学习Python,特别是类似Python的foobuskle DSL。但它的功能要小得多:基本上你只能发送和接收文本。不能编写bash代码可以调用的支持函数(除非也将其生成到bash中),正确的错误处理可能会很困难,等等

根据配置需要的强大程度,我将使用Python。我可能会加载文件本身并在其上使用eval(),从而完全控制其命名空间。例如,我可以传递各种实用程序和助手函数,或者提供它们可以直接操作的对象。在

如果它非常简单,指定标志和名称,诸如此类的事情,那么您可以将其作为.ini文件,并在标准库中使用ConfigParser()。在

相关问题 更多 >