如何将已打印的os.system的返回值存储到python中的stdout?

时间:2011-07-19 10:41:58

标签: python

我正在编写一个python脚本,用于检查特定IP /端口的活动连接数。为此,我使用os.system('my_command')来获取输出。 os.system返回我传递的命令的退出状态(0表示返回的命令没有错误)。 如何将os.system抛出的值存储到变量中的STDOUT?这样这个变量以后可以在函数中用于计数器。 像subprocess,os.popen这样的东西可以提供帮助。有人可以建议吗?

4 个答案:

答案 0 :(得分:14)

a=os.popen("your command").read()

存储在变量a的新结果:)

答案 1 :(得分:5)

import subprocess
p = subprocess.Popen('my_command', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, error = p.communicate()

答案 2 :(得分:1)

import subprocess
p = subprocess.Popen('my_command', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
out, error = p.communicate()

答案 3 :(得分:0)

netstat -plant | awk '{print $4}' | grep %s:%s | wc -l

您可以使用Python进行拆分,点击和计数:

process = subprocess.Popen(['netstat', '-plant'], stdout=subprocess.PIPE)

num_matches = 0

host_and_port = "%s:%s" % (ip, port)

for line in process.stdout:
    parts = line.split()
    if parts[3] == host_and_port: # or host_and_port in parts[3]
        num_matches += 1


print num_matches