📅  最后修改于: 2023-12-03 15:08:45.643000             🧑  作者: Mango
在 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