subprocess.call未按预期运行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了subprocess.call未按预期运行相关的知识,希望对你有一定的参考价值。
我有一个简单的脚本,从python调用sql脚本
subprocess.call([
'sqlcmd',
'-S', 'server_name',
'-d', 'db name'
'-i', r'path to the script + script name'
])
python脚本运行没有错误,但从不调用sql脚本。我可以通过命令行sqlcmd "path to the script + script name"
运行sql脚本,它按预期工作。
我可以使用subprocess
模块调用存储过程没有问题,
subprocess.Popen([
'sqlcmd',
'-S', 'server_name',
'-d', 'db name'
'-Q', 'exec stored procedure'
])
但调用单独的脚本不会产生任何结果。我试过包括shell = True
或使用Popen
但没有任何变化。
为了进行更多测试,我创建了一个只返回当前数据库名称的测试脚本。我通过命令行运行它没有问题sqlcmd -S server_name -d db_name -i "directory/test1.sql"
,获得预期的结果。我试图用subprocess
模块运行它并再次得到我的问题,我尝试了subprocess.call_check
并得到一个错误说明exit status 1
。因此脚本使用命令行运行,但不使用subprocess
模块。
答案
我的问题是sql脚本和python脚本的目录,即使我指定了sql脚本的完整路径。他们在不同的光盘上,当我使用non-zero exit status 1
时,我一直在接受subprocess.call_check()
。我把两个脚本放在同一个位置,问题就消失了。
以上是关于subprocess.call未按预期运行的主要内容,如果未能解决你的问题,请参考以下文章