📜  如何在 python 中捕获 cmd 输出(1)

📅  最后修改于: 2023-12-03 15:08:45.643000             🧑  作者: Mango

如何在 Python 中捕获 cmd 输出

在 Python 中,可以使用 subprocess 模块来执行命令,并获取命令的输出。

首先,我们需要导入 subprocess 模块:

import subprocess

接下来,可以使用 subprocess.run() 方法来执行命令,并将输出赋值给一个变量,例如:

output = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(output)

在上面的示例中,我们执行了 ls -l 命令,并将输出保存在 output 变量中。capture_output=True 参数表示将命令的标准输出和标准错误输出捕获到一个变量中,text=True 参数表示使用文本模式来获取输出。

输出的格式为:

CompletedProcess(args=['ls', '-l'], returncode=0, stdout='total 8\n-rw-r--r-- 1 user user   29 Nov 27 14:42 file1.txt\n-rw-r--r-- 1 user user   87 Nov 27 14:45 file2.txt\n', stderr='')

其中,args 表示执行的命令及其参数,returncode 表示命令的返回值,stdout 表示命令的标准输出,stderr 表示命令的标准错误输出。

如果只需要获取标准输出,可以使用 subprocess.PIPE 参数来捕获输出,例如:

p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = p.communicate()
print(output.decode())

在上面的示例中,我们使用了 Popen 方法来执行命令,stdout=subprocess.PIPE 参数表示将标准输出捕获到一个管道中,communicate() 方法用来获取输出和错误输出,decode() 方法用来将字节流转换成字符串。

输出的格式为:

total 8
-rw-r--r-- 1 user user   29 Nov 27 14:42 file1.txt
-rw-r--r-- 1 user user   87 Nov 27 14:45 file2.txt