从python3.4执行windows命令

时间:2015-06-04 07:20:23

标签: python windows cmd subprocess python-3.4

我有一个命令用于从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。但是它没有用。请帮帮我。

2 个答案:

答案 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)