如何使用子进程从 Python 中调用参数周围带有双引号的应用程序



我正在尝试从python内部调用certutil。但是我需要使用引号,但一直无法这样做。我的代码如下:

import subprocess
output= subprocess.Popen(("certutil.exe", "-view", '-restrict "NotAfter <= now+30:00, NotAfter >= now+00:00"' ), stdout=subprocess.PIPE).stdout
for line in output:
    print(line)
output.close()

我认为单引号将允许我在字符串中使用双引号。

我也尝试使用带有转义字符("(的双引号,但是我不断收到相同的错误:

Unknown arg: -restrict \NotAfterrn'

出于某种原因,它似乎正在将"翻译成\.

任何人都可以深入了解为什么以及如何解决它?

我没有安装任何版本的Python。但是根据回答 如何在os.system中使用2个引号?PYTHON和子进程的文档,子进程自动处理带空格的参数上的双引号要求。

所以你应该需要简单地使用:

import subprocess
output= subprocess.Popen(("certutil.exe", "-view", "-restrict", "NotAfter <= now+30:00, NotAfter >= now+00:00" ), stdout=subprocess.PIPE).stdout
for line in output:
    print(line)
output.close()

调用 certutil 时使用的命令行是:

certutil.exe -view -restrict "NotAfter <= now+30:00, NotAfter >= now+00:00"
output=subprocess.Popen(("certutil.exe -view -restrict  "NotAfter<=now+30:00,NotAfter>=now+00:00"" ),stdout=subprocess.PIPE).stdout

这是需要的。我将命令作为带有 2 个参数的命令传递。我应该做的是将其作为一个带有 2 个参数的大命令传递。

相关内容

  • 没有找到相关文章

最新更新