如何使用python';s子进程,传递包含空格的安装目录?

如何使用python';s子进程,传递包含空格的安装目录?,python,windows-installer,Python,Windows Installer,当我尝试使用类似以下形式的Python命令运行MSI时 子进程调用([“msiexec.exe”、“/i”、“myinstaller.msi”、“/log”、“myinstalllog.log”、“INSTALLDIR=\”C:\Program Files\InstallDirectory\”) 它无法安装,相反,我只是得到解释可用命令行选项的Windows Installer弹出窗口。如果我使用不同的INSTALLDIR参数,该参数不包含空格(并且没有转义引号),那么它就可以工作。我也可以从o

当我尝试使用类似以下形式的Python命令运行MSI时

子进程调用([“msiexec.exe”、“/i”、“myinstaller.msi”、“/log”、“myinstalllog.log”、“INSTALLDIR=\”C:\Program Files\InstallDirectory\”)


它无法安装,相反,我只是得到解释可用命令行选项的Windows Installer弹出窗口。如果我使用不同的INSTALLDIR参数,该参数不包含空格(并且没有转义引号),那么它就可以工作。我也可以从os.system运行msi,但这不适合我的预期目的,因为我需要Python等待安装完成。

在重新阅读您所说的内容后,问题实际上不是引号,而是字符串中的斜杠字符在不应该使用时充当转义字符,我所做的测试是创建一个父脚本:

#!python3

import subprocess

if __name__ == "__main__":
    subprocess.call(["py.exe", "child.py", "/i", "myinstaller.msi", "/log", "myinstalllog.log", "INSTALLDIR=\"C:\\Program Files\\InstallDirectory\""])
和一个子脚本:

#!python3

import sys
print("Argument count: %i" % len(sys.argv))
for item in sys.argv:
    print(item)

thing = input("Press return to exit")
请注意,在父脚本中,我已更改:

"INSTALLDIR=\"C:\Program Files\InstallDirectory\""
致:


这样一来,斜杠肯定是斜杠,而不是转义符。

您尝试过对目录进行双引号引用吗?是的,但没有效果。我尝试了“INSTALLDIR=\”\“C:\Program Files\InstallDirectory\”,“INSTALLDIR=”C:\Program Files\InstallDirectory\”,“INSTALLDIR=”C:\Program Files\InstallDirectory\”,“INSTALLDIR=”C:\Program Files\InstallDirectory\”,“INSTALLDIR=”C:\Program Files\InstallDirectory\”,
"INSTALLDIR=\"C:\\Program Files\\InstallDirectory\""