在 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
最佳答案
您可以使用三引号将字符串文字括起来,同时使用单引号和双引号:
subprocess.check_output(['perl', '/opt/ona/bin/dcm.pl', '-r', 'ona_sql', '''sql="select something from table where name='somename'"''', 'header=no'])
关于python - 带双引号的子流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58468393/