【发布时间】:2022-11-26 15:32:59
【问题描述】:
我是 python 的新手,我正在尝试使用以下方法获取我的网卡的 IP 地址:
import sys
import os
ip_address = os.system('/sbin/ifconfig ens33 | grep "inet" |awk '/inet / { print $2 }' | cut -d":" -f2')
但是它返回以下错误:
ip_address = os.system('/sbin/ifconfig ens33 | grep "inet" |awk '/inet / { print $2 }' | cut -d":" -f2')
^
语法错误:语法无效
如果我只是在这里,它会得到一些输出:
ip_address = os.system('/sbin/ifconfig ens33 | grep "inet" ')
inet 192.168.130.130 网络掩码 255.255.255.0 广播 192.168.130.255 inet6 fe80::97b9:2816:c3a3:e02e prefixlen 64 scopeid 0x20
有没有办法使用 os 和 sys 来做到这一点?
【问题讨论】:
-
您的内部单引号需要转义。
-
即使您修复了语法错误,这也不会起作用...
os.system()不会返回命令的输出。您将要查看subprocess模块。 -
如果您不想担心内部引号的正确转义,请将整个命令行括在一对三引号
"""之间。但是,为什么需要通过grep和awk提供ifconfig的结果?你可以用 Python 处理它...... -
谢谢克劳斯,我现在把它改成: ip_address = os.system('/sbin/ifconfig ens33 | grep "inet" |awk \'/inet / { print $2 }\' | cut -d":" -f2' ) 打印出来:192.168.130.130 0 我如何让它不打印“0”
-
“有没有办法使用 os 和 sys 来做到这一点?”你不应该使用
os.sytem,使用subprocess模块
标签: python python-3.x os.system