我正在使用python编写功能脚本脚本,我无法处理此命令行的结果:
os.system("ps aux -u %s | grep %s | grep -v 'grep' | awk '{print $2}'" % (username, process_name)
它显示了我的pids,但我不能将它用作List。
如果我测试:
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'>
为什么pids
为int
?如何以List
处理此结果?
陌生人:
print type(os.system("ps aux -u %s | grep %s | grep -v 'grep' | awk '{print $2}'" % (username, process_name))
什么都没有。不是我的控制台上写的任何类型..
答案 0 :(得分:6)
os.system
不捕获它运行的命令的输出。为此,您需要使用subprocess
。
from subprocess import check_output
out = check_output("your command goes here", shell=true)
以上内容适用于Python 2.7。对于较老的蟒蛇,请使用:
import subprocess
p = subprocess.Popen("your command goes here", stdout=subprocess.PIPE, shell=True)
out, err = p.communicate()
答案 1 :(得分:0)
<强>使用os.system(命令)强>
在子shell中执行命令(字符串)。这是通过调用标准C函数系统()来实现的,并且具有相同的限制。对sys.stdin等的更改不会反映在已执行命令的环境中。
在Unix上,返回值是以wait()指定的格式编码的进程的退出状态。请注意,POSIX没有指定C system()函数的返回值的含义,因此Python函数的返回值取决于系统。
如果您想要访问该命令的输出,请改用subprocess module,例如check_output
:
subprocess.check_output(args,*,stdin = None,stderr = None,shell = False,universal_newlines = False)
使用参数运行命令并将其输出作为字节字符串返回。