子进程arp a产生的结果比cmd arp少

2024-05-22 09:36:58 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码产生的ip收益比在cmd中执行arp -a要小

arpA_req = Popen('arp -a', stdin=PIPE, stdout=PIPE, stderr=STDOUT)

line = arpA_req.stdout.readline().decode('ascii').rsplit()
print(line)

有人知道为什么会这样吗?如果这是一个常见的问题,我如何获得一个更完整的ip列表?在


Tags: 代码ipcmdreadlinestderrstdinstdoutline
1条回答
网友
1楼 · 发布于 2024-05-22 09:36:58

正如wim指出的,readline()只读取一行。 要读取所有输出,一种方法是调用communicate

import subprocess
PIPE, STDOUT = subprocess.PIPE, subprocess.STDOUT
arpA_req = subprocess.Popen(
    ['arp', '-a'], stdin=PIPE, stdout=PIPE, stderr=STDOUT)
out, err = arpA_req.communicate()
print(out)

或者,要一次处理一行,标准的习惯用法是使用iter(func, stop_value)

^{pr2}$

相关问题 更多 >