我有一个命令用于从Windows命令行进行部署。现在我需要从外部python3.4脚本运行相同的程序。
命令为C:\Program Files (x86)\MSBuild\12.0\Bin\msbuild "D:\WebService\WebService.sln" /p:DeployOnBuild=true /p:PublishProfile="D:\WebService\Properties\PublishProfiles\MyDeployment.pubxml" /p:AllowUntrustedCertificate=true /p:UserName=name /p:Password=PASSWORD
。
我怎样才能做到这一点。我试过了subprocess
。但是它没有用。请帮帮我。
答案 0 :(得分:3)
您的问题似乎是\
和"
字符,因此请使用原始字符串。此外,使用列表更安全:
proc = subprocess.Popen(
[r"C:\Program Files (x86)\MSBuild\12.0\Bin\msbuild",
r"D:\WebService\WebService.sln",
r"/p:DeployOnBuild=true",
r"/p:PublishProfile=D:\WebService\Properties\PublishProfiles\MyDeployment.pubxml",
r"/p:AllowUntrustedCertificate=true",
r"/p:UserName=name",
r"/p:Password=PASSWORD"])
proc.wait()
严格地说,您不需要所有这些参数的原始字符串,但使用Windows路径更安全。 如果你有嵌入的空格(作为第一个参数),你只需要内部双引号。这里我们没有使用shell,如果需要,可以设置shell=True
作为参数。在Windows上使用shell的一个原因是文件名关联,但是你似乎没有在这里使用它。
答案 1 :(得分:0)
你能用你迄今为止尝试的内容发布一些代码吗?
子进程模块应该能够处理它,例如
theproc = subprocess.Popen(["COMMAND HERE"])
theproc.communicate()
或者您可以尝试使用shell标志
theproc = subprocess.Popen(["COMMAND HERE"], shell=True)