Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在同一shell中使用python在cmd中执行多个windows命令_Python 3.x_Shell_Subprocess_Command Line Arguments - Fatal编程技术网

Python 3.x 如何在同一shell中使用python在cmd中执行多个windows命令

Python 3.x 如何在同一shell中使用python在cmd中执行多个windows命令,python-3.x,shell,subprocess,command-line-arguments,Python 3.x,Shell,Subprocess,Command Line Arguments,我想一个接一个地执行一些命令,并将其存储到同一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 = subproce

我想一个接一个地执行一些命令,并将其存储到同一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”未被识别为内部或外部命令, 可操作的程序或批处理文件


我想一个接一个地执行两个命令,并将它们存储到变量中。因此,我可以在其他命令中使用该变量。

您应该使用
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
命令在
子流程中无效。它首先与
cd
的工作方式有关-任何进程都不能更改另一个进程的工作目录。

您应该使用
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
命令在
子流程中无效。这首先与
cd
的工作方式有关-任何进程都不能更改另一个进程的工作目录。

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