尝试通过Python解析正在运行的进程时出错
我尝试用子进程python模块解析计算机(Debian OS)中运行的程序。这是我的密码:尝试通过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
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刚刚尝试过,但我收到了相同的错误消息