如何从python中的另一个目录导入.sh文件

我在目录.sh下有一个/me/app/environment/env_param.sh脚本

哪个变量(尝试导出)的变量很少

export username = "uname"
export pw = "password"

。 。

还有目录/me/dbconnect.py下的python脚本

那么如何在我的dbconnect.py脚本中导入env_param.sh并利用'username'中的'pw'dbconnect.py变量?

hanyujing 回答:如何从python中的另一个目录导入.sh文件

通常,您不会在Python程序中使用import shell脚本,它们是单独的脚本引擎,具有不同的语法,运行时时间约定和环境。

常见设置包括构建“启动器”脚本-围绕着“ py”的小包装纸。

〜/ me / dbconnect.sh

source ~/app/environment/env_param.sh
~/me/dbconnect.py ...

在〜/ me / dbconnect.py内部

   import os ;
   ...
   print(os.environ['username')) ;

替代1:

您还可以考虑将env_param.sh转换为属性文件的替代方法,其中每一行都遵循keyword = value格式。在此设置中,sh脚本可以“获取” param文件(假设没有通配符等),而python程序可以将文件解析为字典。

env.param:

user=my-user-id
password=my-pass

使用此解决方案将仅支持简单常量。

有关如何将属性文件读入字典的信息,请参见Python: How to create a dictionary from properties file while omitting comments

替代2: 如果这两个选项都不可行,请考虑在python中打开env_param.sh,然后查找与“ export var = value”匹配的行,并将其加载到字典中。不利的一面是,使用bash / shell功能的参数文件扩展名都无法使用。

,

除了您发布的env_params.sh在语法上是无效的事实之外,我认为您有充分的理由要在shell文件中提供参数,但希望从Python内部读取它们。为此,建议您创建一个辅助外壳文件,该文件将提供参数文件并输出所有参数:

A()

您可以从Python程序中运行该脚本,然后解析其输出,除非某些变量扩展为包含换行符的字符串,否则输出就是一组简单的NAME = VALUE行,类似于INI文件。

这样做意味着您可以使用参数文件中的所有shell功能,例如参数扩展等,并且,如果需要,还可以在其他shell脚本中使用参数文件。

本文链接:https://www.f2er.com/3139187.html

大家都在问