如何将子进程输出插入变量

时间:2017-11-07 19:40:44

标签: python powershell subprocess

我正在尝试在python中使用Powershell并使用get-disk命令 我尝试使用stdout并打印它,但它的值在我使用Communicate()函数后就消失了 这是我的代码:

proc = subprocess.Popen(r"C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe", stdin = subprocess.PIPE,
                    stdout = subprocess.PIPE)
stdout, stderr = proc.communicate('get-disk')
print stdout

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您可以尝试以下操作,它将读取您的进程的std输出 用

开始这个过程时
proc=Popen('Some process',stdout=subprocess.PIPE)

stdout = proc.stdout.read()

答案 1 :(得分:0)

您可以按照以下步骤执行此操作

from subprocess import Popen
from subprocess import Popen, CREATE_NEW_CONSOLE,PIPE,STDOUT
import subprocess
command="powershell.exe get-disk"

#This will open the command in a new console
proc=Popen(command,creationflags=CREATE_NEW_CONSOLE,stdout=subprocess.PIPE)
read_stdout=[]
for lines in proc.stdout.readlines():
    read_stdout.append(lines)

print read_stdout

答案 2 :(得分:0)

我推荐1:00-1:30 PM, 2:00=2:30 PM 5:00-5:30 PM 而不是proc.stdout.read()

你想要的是这样的:

proc.communicate()