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未按预期运行的主要内容,如果未能解决你的问题,请参考以下文章

viewDidLoad 未按预期运行

C#“继续”未按预期运行

迭代器未按预期运行

sizeof(enum) 未按预期运行

变量未按预期运行

变量未按预期运行