gpt4 book ai didi

python - 使用带双引号和 cw ="filename"格式参数行的子进程和 Popen

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:56 24 4
gpt4 key购买 nike

我尝试了多种方法 - 三重引用和使用格式。但我似乎无法让程序在参数格式正确的情况下运行。该程序是一个自定义程序,我设法使用 os.system() 运行,但由于我需要更复杂的交互,因此需要使用 Popen()

这是我需要的格式:

cmd.exe -s cw="filename.xyz" 

其中cmd是windows 7的可执行程序。命令行参数的格式需要双引号,我怀疑这是导致问题的原因。对于 os.system() 调用,我使用了以下内容:

filename = r"""filename.xyz"""

然后我建立了命令:

command = 'cms.exe -cw=' + filename
os.system(command)

这似乎可行,但我无法使用子进程和 Popen 进行复制:

args = '-cw=' + filename
p = Popen(['cmd.exe', '-s', args], universal_newlines=True, stdout=PIPE, bufsize=1, shell=True)
for line in iter(p.stdout.readline, b''):
print line

我得到了错误的格式 - 它看起来是正确的,如果我将打印出来的参数复制并粘贴到另一个窗口并运行该程序,我就会运行该程序。

我想知道文件名是否搞砸了。

filename = 'C:\\CWD\\CWD\\filename.xyz'

有人建议我尝试:

p = Popen([command, '-s', '-cw=%s' % (filename,)], universal_newlines=True, stdout=PIPE, bufsize=1), 

但这也不起作用。

作为一个糟糕的 hack 解决方案,我以正确的格式创建了一个 .bat(Windows 批处理文件)并使用 Popen 执行该文件,但是它是一个糟糕的 hack,但仍然不明白为什么我无法获取参数字符串行为。

最佳答案

您是否错过了 = 符号?也许你想要

args = '-cw=' + filename

(注意 cw=)

你真的会运行cmd.exe吗?在 Windows 中,cmd.exe 是 shell(嗯,终端)的名称,因此您可能会遇到一次名称冲突

关于python - 使用带双引号和 cw ="filename"格式参数行的子进程和 Popen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com