python脚本中的shell脚本,参数为sql脚本

python脚本中的shell脚本,参数为sql脚本,python,sql,shell,Python,Sql,Shell,Python脚本: import subprocess proc = subprocess.Popen(['sh ' + '/dir_path/script_to_Call_sql_script.sh ' + '\"select ID,DATE,STATUS from XYZ_TABLE;\"'], stdout=subprocess.PIPE, shell=True) (out, err) = proc.communicate() BOOK=out.split() 上述脚本不适用于提供输出

Python脚本:

import subprocess

proc = subprocess.Popen(['sh ' + '/dir_path/script_to_Call_sql_script.sh ' + '\"select ID,DATE,STATUS from XYZ_TABLE;\"'], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
BOOK=out.split()
上述脚本不适用于提供输出。但脚本从同一目录中提取默认脚本select.sql

如果我删除了select.sql查询,则会出现以下错误:

SP2-0310: unable to open file "select.sql"
我想把不同的(总共6个)SQL脚本一个接一个地传递给这段代码。 例如:

proc = subprocess.Popen(['sh ' + '/dir_path/script_to_Call_sql_script.sh ' + ' first.sql'], stdout=subprocess.PIPE, shell=True)

下面的代码解决了我的问题。我使用os.popen而不是subprocess.popen

os.popen('./dir_path/script_to_Call_sql_script.sh sql_query.sql').read()

谢谢大家:-)

为什么要指定
sh
shell=True
?可能是通过从shell调用shell来剥离引号。如果脚本具有执行权限和
#行然后您不需要
sh
shell=True
。而不是
/dir\u path/script\u调用\u sql\u script.sh
我正在使用
sh
。。。即使删除后,我也会得到同样的错误。脚本仅查找select.sql文件