尝试获取并打印并进一步使用pi上的本地IP地址:
import os
getipaddr = "ip addr show eth0 | grep inet"
ip = "%s" % (os.system(getipaddr))
print ip
返回:
inet 192.168.1.200/24 brd 192.168.1.255范围全球eth0
0
正确包含本地地址,但是:
import os
getipaddr = "ip addr show eth0 | grep inet"
ip = "%s" % (os.system(getipaddr))
print ip[9:22]
返回:
inet 192.168.1.200/24 brd 192.168.1.255 scope global eth0
不是我预期的从字符10到21的字符子集。也许ip不是真正的字符串变量。任何有关如何修复的帮助非常感谢。谢谢! [注意:打印返回中inet前面实际上有4个空格,只是不知道如何在这个论坛中显示它]
答案 0 :(得分:2)
如果查看this question,您会看到os.system
的返回值是调用的返回值,而不是它的输出。您在屏幕上看到的输出不是来自python,而是来自ip
调用。如果要捕获输出,请使用subprocess
模块:
from subprocess import check_output
getipaddr = "ip addr show eth0 | grep inet"
ip = check_output(getipaddr, shell=True)
现在,输出将在ip
,您应该得到所需的结果。
作为旁注,'%s' % something
是一种反模式。转换字符串的更清晰的方法是str(something)
。