带有双引号的子流程

时间:2019-10-19 22:04:46

标签: python subprocess

在python中,必须在子进程中运行以下perl命令。

perl命令:

perl dcm.pl -r ona_sql sql="select something from table where name='somename'" header=no

我需要对引号进行转义,但不能使其正常工作。

下面的示例对我来说最有意义,但这也不起作用。

import subprocess
import sys

subprocess.check_output(["/usr/bin/perl", "/opt/ona/bin/dcm.pl", "-r", "ona_sql", "sql=\"select something from table where name='somename'\"", "header=no"]).decode(sys.stdout.encoding)

导致:

subprocess.CalledProcessError: Command '['/usr/bin/perl', '/opt/ona/bin/dcm.pl', '-r', 'ona_sql', 'sql="select something from table where name=\'somename\'"', 'header=no']' returned non-zero exit status 3

2 个答案:

答案 0 :(得分:1)

您可以使用三引号将字符串文字包含在单引号和双引号中:

$('.' + children_wrapper_class).before('<i class="fa fa-fw fa-angle-down"></i>');

答案 1 :(得分:0)

尝试使用单引号代替

'sql="select something from table where name=\'somename\'"'