我是python编程的新手。通过在互联网上搜索python文档来写这个脚本。
有人可以帮我把第二列作为“ps aux”命令的输出(即只有PID列)。
#script to print the processid
import os
import commands
out=commands.getoutput('ps aux') # to get the process listing in out
#print out
#print out[2] #print only second column from out
print out[:2]
output of "print out" statement
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 5728 1068 ? Ss Oct13 0:07 /sbin/init
root 2 0.0 0.0 0 0 ? S< Oct13 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< Oct13 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S< Oct13 0:11 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Oct13 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S< Oct13 0:00 [migration/1]
提前致谢
答案 0 :(得分:3)
使用split()
和splitlines()
(将字符串转换为行列表,将行列表转换为列列表,然后根据需要进行索引):
>>> for line in out.splitlines():
... fields = line.split()
... if len(fields) >= 2:
... print fields[1]
PID
1
2
3
4
5
6
答案 1 :(得分:3)
正如评论中所提到的,使用awk
非常简单:
ps aux | awk {'print $2'}
但是,这里也是一个使用列表推导的python解决方案,它给出了一个PID列表:
>>> [col.split()[1] for col in out.splitlines()]
['PID', '1', '2', '3', '4', '5', '6']