将Os.system结果存储在变量中

2 投票
3 回答
2950 浏览
提问于 2025-04-16 19:09

大家好,我想知道怎么把os.system的结果存到一个变量里。

我们都知道它返回的是0。

所以我在想,我应该怎么做才能把结果存起来。

还有第二个问题:在Linux中怎么获取IP地址?[有人可能会建议用ifconfig],但是ifconfig显示的结果太多了,我只想要IP地址。

3 个回答

0

你好,你可以创建一个子进程(Subprocess.pipe),然后打印出ifconfig的输出。这里有一段代码供你参考:

import os
import subprocess
from subprocess import *
subprocess.call(["ifconfig","en0”])
p=subprocess.Popen(["ifconfig","en0"],stdout=subprocess.PIPE)
for line in p.stdout:
    print line
1

因为你第一个问题是关于Python的,这里教你如何在Linux系统中用Python获取IP地址:

import socket
import fcntl
import struct

ifname='eth0'
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = socket.inet_ntoa(fcntl.ioctl(
                    s.fileno(),
                    0x8915,  # SIOCGIFADDR
                    struct.pack('256s', ifname[:15])
                    )[20:24])
1
import os
from subprocess import *

def run_cmd(cmd):
        p = Popen(cmd, shell=True, stdout=PIPE)
        output = p.communicate()[0]
        return output

关于第二个问题,可以参考这个链接:http://www.cyberciti.biz/tips/read-unixlinux-system-ip-address-in-a-shell-script.html

撰写回答