尝试通过Python解析正在运行的进程时出错

尝试通过Python解析正在运行的进程时出错,python,subprocess,Python,Subprocess,我尝试用子进程python模块解析计算机(Debian OS)中运行的程序。这是我的密码: import subprocess cmd = "ps -A" # Unix command to get running processes runningprox = subprocess.check_output(cmd) #returns output as byte string rpstring = runningprox.decode("utf-8") #converts byte

我尝试用子进程python模块解析计算机(Debian OS)中运行的程序。这是我的密码:

import subprocess

cmd = "ps -A" # Unix command to get running processes

runningprox = subprocess.check_output(cmd) #returns output as byte string

rpstring = runningprox.decode("utf-8") 
#converts byte string to string and puts it in a variable

print(rpstring)
但是,当我运行代码时,会收到以下错误消息:

回溯(最近一次调用last):文件“ratalert.py”,第6行,在 runningprox=subprocess.check_output(cmd)#以字节字符串文件“/usr/local/lib/python3.6/subprocess.py”的形式返回输出,第336行,在 检查输出 **标准输出文件“/usr/local/lib/python3.6/subprocess.py”,第403行,正在运行 将Popen(*popenargs,**kwargs)作为进程:文件“/usr/local/lib/python3.6/subprocess.py”,第707行,在init 还原信号,启动新会话)文件“/usr/local/lib/python3.6/subprocess.py”,第1333行,在执行子进程中 引发子项异常类型(errno\u num,err\u msg)FileNotFoundError:[errno 2]没有这样的文件或目录:“ps-A”

我不明白为什么我会收到这个错误消息。考虑到“ps-A”既不是文件也不是目录,而是我作为字符串放入变量中的Unix命令


我怎样才能解决这个问题?谢谢。

子流程。check\u output函数需要一个包含命令及其参数的列表,如下所示:

runningprox = subprocess.check_output(['ps', '-A'])
否则,它会将您传递的字符串视为单个命令,并查找名为
ps-a
、包含空格和全部的可执行文件

您可以使用shlex执行shell所做的拆分操作:

import shlex, subprocess

cmd = 'ps -A'
runningprox = subprocess.check_output(shlex.split(cmd))

实际上,
ps
是一个文件,请尝试使用
/bin/ps-a
@gogaz刚刚尝试过,但我收到了相同的错误消息