[英]How to import .sh file from another directory in python
我在目录/me/app/environment/env_param.sh
下有一个.sh
脚本
其中包含很少的变量(试图导出)为
export username = "uname"
export pw = "password"
. . .
和目录/me/dbconnect.py
下的 python 脚本
那么如何在我的dbconnect.py
脚本中导入 env_param.sh 并使用'username'
和'pw'
变量(在dbconnect.py
中)?
通常,您不会import
shell 脚本导入 python 程序,它们是独立的脚本引擎,具有不同的语法、运行时约定和环境。
常见设置包括构建“启动器”脚本 - 围绕您的“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 转换为属性文件的替代方法,其中每一行都遵循关键字=值格式。 在此设置中,sh 脚本可以“获取”参数文件(假设没有通配符等),并且 python 程序可以将文件解析为字典。
环境参数:
user=my-user-id
password=my-pass
使用此解决方案将仅支持简单的常量。
请参阅: Python:如何从属性文件创建字典,同时省略有关如何将属性文件读入字典的注释。
备选方案 2:如果这两个选项都不实用,请考虑在 python 中打开 env_param.sh,并查找与“export var=value”匹配的行,并将它们加载到字典中。 不利的一面是,将使用 bash/shell 功能的参数文件的任何扩展都将不起作用。
除了您发布的 env_params.sh 在语法上无效这一事实之外,我认为您有充分的理由希望在 shell 文件中提供参数,但又想从 Python 中读取它们。 为此,我建议您创建一个辅助 shell 文件,该文件获取您的参数文件并输出所有参数:
#!/bin/sh
# Auxiliary file
. /path/to/env_params.sh
echo username=$username
echo pw=$pw
....
您从 Python 程序运行此脚本,并解析其 output,除非某些变量扩展为包含换行符的字符串,否则它就是一组简单的 NAME=VALUE 行,类似于 INI 文件。
这样做意味着您可以使用参数文件中的所有 shell 功能,例如参数扩展等,如果需要,您还可以使用其他 shell 脚本中的参数文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.