subprocess.call没有按预期运行

时间:2017-12-22 17:16:47

标签: python subprocess

我有一个简单的脚本,从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模块一起运行。

1 个答案:

答案 0 :(得分:1)

我的问题是sql脚本和python脚本的目录,即使我指定了sql脚本的完整路径。他们在不同的光盘上,当我使用non-zero exit status 1时,我一直在subprocess.call_check()。我已将两个脚本放在同一位置,问题就消失了。