Python: os.system(ping) 参数无效?

0 投票
2 回答
10470 浏览
提问于 2025-04-18 06:34

我正在尝试写一个函数,这个函数里用到了os.system(ping),并且想用一个变量来代替ping的目标地址,但它就是不接受这个变量:

import os

def myping(myip):
    print(myip)
    ip1 = os.system("ping -c 1 myip")
    print(ip1)
myping("127.0.0.1")

运行后返回的代码是512(失败,而不是0,0表示成功),然后显示“ping: unknown host myip”。根据我在os.system语句中格式化myip的方式,我还可能得到256和其他错误。我尝试了各种格式,包括加引号、加括号、用百分号等等,但我就是不知道哪里出错了。

我感觉它把我想要扫描的myip当成了一个字面字符串。请问我这里的语法有什么问题吗?谢谢。

顺便说一下,在这个函数里打印myip的值确实是127.0.0.1。

2 个回答

0

另一个选择是

ip = os.system(f'ping -c 1 {myip}')
3

你可能想把 myip 的值放到 os.system 的参数里:

ip1 = os.system('ping -c 1 {}'.format(myip))

或者(旧的写法,在 Python 3.1 中不推荐使用):

ip1 = os.system("ping -c 1 %s" % myip)

撰写回答