【问题标题】:How to perform multiple windows command in cmd using python in same shell如何在同一shell中使用python在cmd中执行多个windows命令
【发布时间】:2019-06-04 00:37:19
【问题描述】:

我想一个接一个地执行一些命令并将其存储到同一个 shell 中的变量中。每当我尝试执行下一个命令时,它都会在新的 shell 中执行

import subprocess

cmd1 = 'cd C:\\Program Files (x86)\\openvpn\\bin\\'
output = subprocess.getoutput(cmd1) # it goes to the above directory

cmd2 = 'openvpn.exe --help'
output2 = subprocess.getoutput(cmd2) 

在cmd2运行时,一个新的shell执行这个命令并告诉-- 'openvpn.exe' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

我想一个接一个地执行几个命令并存储到变量中。所以我可以在其他命令中使用这些变量。

【问题讨论】:

  • 简单的方法是将所有命令放入一个文件 (tmp.cmd),然后运行该文件。
  • 我想一个接一个地执行几个命令,这样我就可以存储到变量中,我必须在其他命令中使用一些变量。
  • 再次,将所有这些命令放入 tmp.cmd,然后从 Python 运行 tmp.cmd。另一种方法是在 Python 中使用 os.chdir()。最可怕的版本是使用Pexpect 模块并模拟shell 的输入。

标签: python-3.x shell subprocess command-line-arguments


【解决方案1】:

您应该使用run 方法,如下所示:

output = subprocess.run(['openvpn.exe', '--help'], cwd='C:\\Program Files (x86)\\openvpn\\bin\\', capture_output=True)
  • cwd = 当前工作目录(命令应该在哪里运行)
  • capture_output = 记录标准输出、标准错误流

然后您可以在 stdout、stderr 属性中访问您的结果:

output.stdout  # will give you back the output of the command.

您没有得到任何结果,因为cd 命令在subprocess 中无效。它首先与 cd 的工作方式有关 - 没有进程可以更改另一个进程的工作目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2019-01-13
    • 2015-11-20
    • 1970-01-01
    • 2016-01-08
    相关资源
    最近更新 更多