Python 操作系统的处理结果

Python 操作系统的处理结果,python,os.system,Python,Os.system,我正在使用python编写函数脚本,无法处理此命令行的结果: os.system("ps aux -u %s | grep %s | grep -v 'grep' | awk '{print $2}'" % (username, process_name) 它向我显示PID,但我不能将其用作列表 如果我测试: pids = os.system("ps aux -u %s | grep %s | grep -v 'grep' | awk '{print $2}'" % (username, pr

我正在使用python编写函数脚本,无法处理此命令行的结果:

os.system("ps aux -u %s | grep %s | grep -v 'grep' | awk '{print $2}'" % (username, process_name)
它向我显示PID,但我不能将其用作列表

如果我测试:

pids = os.system("ps aux -u %s | grep %s | grep -v 'grep' | awk '{print $2}'" % (username, process_name)
print type(pids)

#Results
29719
30205
31037
31612
<type 'int'>
什么都没有。我的控制台上没有写入任何类型

os.system不会捕获它运行的命令的输出。为此,您需要使用子流程

以上内容将在Python2.7中使用。对于较旧的蟒蛇,请使用:

import subprocess
p = subprocess.Popen("your command goes here", stdout=subprocess.PIPE, shell=True)
out, err = p.communicate()
os.system不会捕获它运行的命令的输出。为此,您需要使用子流程

以上内容将在Python2.7中使用。对于较旧的蟒蛇,请使用:

import subprocess
p = subprocess.Popen("your command goes here", stdout=subprocess.PIPE, shell=True)
out, err = p.communicate()
操作系统命令

在子shell中使用字符串执行命令。这是通过调用标准C函数系统实现的,并且具有相同的限制。对sys.stdin等的更改不会反映在已执行命令的环境中

在Unix上,返回值是以指定的等待格式编码的进程的退出状态。注意,POSIX没有指定C系统函数返回值的含义,因此Python函数的返回值依赖于系统

如果要访问命令的输出,请改用,例如检查输出:

subprocess.check\u outputargs,*,stdin=None,stderr=None,shell=False,universal\u newlines=False

使用参数运行命令,并以字节字符串形式返回其输出

操作系统命令

在子shell中使用字符串执行命令。这是通过调用标准C函数系统实现的,并且具有相同的限制。对sys.stdin等的更改不会反映在已执行命令的环境中

在Unix上,返回值是以指定的等待格式编码的进程的退出状态。注意,POSIX没有指定C系统函数返回值的含义,因此Python函数的返回值依赖于系统

如果要访问命令的输出,请改用,例如检查输出:

subprocess.check\u outputargs,*,stdin=None,stderr=None,shell=False,universal\u newlines=False

使用参数运行命令,并以字节字符串形式返回其输出


@Holt的可能重复项这接近于重复项,但是链接的问题没有shell=True,考虑到OP在这里使用管道,这将中断。你找到了shell=True的吗?@ThomasOrozco这一个有一个使用Popen的shell=True,即使另一个OP不需要它。我的想法是,在SO和其他地方有很多帖子询问如何获得shell命令的结果?,对于正在寻找答案的人来说,添加新问题只会让一切变得混乱。@Holt的可能重复项这几乎是重复项,但是链接的问题没有shell=True,考虑到OP在这里使用管道,这将中断。你找到了shell=True的吗?@ThomasOrozco这一个有一个使用Popen的shell=True,即使另一个OP不需要它。我的想法是,在SO和其他地方有很多帖子询问如何获得shell命令的结果?,添加新的内容只会让寻找答案的人感到困惑。你能在官方文档中分享信息吗?这很好。非常感谢。我添加此行是为了列出一个列表。拆分“\n”。顺便说一句,第一个命令shell=True的大写字母出现键入错误。您能在官方文档中共享信息吗?这很好。非常感谢。我添加此行是为了列出一个列表。拆分“\n”。顺便说一下,第一个命令shell=True(大写)上有一个键入错误。
import subprocess
p = subprocess.Popen("your command goes here", stdout=subprocess.PIPE, shell=True)
out, err = p.communicate()