如何使用 python 将 cmd 查询的输出提取到文本文件

How to extract the output of a cmd query to a textfile using python

我有这个简单的 python 代码;

import os
os.system('cmd /k "ping google.com"')

在 运行 代码之后,命令 window 显示以下结果;

Pinging google.com [216.58.223.238] with 32 bytes of data:
Reply from 216.58.223.238: bytes=32 time=57ms TTL=120
Reply from 216.58.223.238: bytes=32 time=26ms TTL=120
Reply from 216.58.223.238: bytes=32 time=14ms TTL=120
Reply from 216.58.223.238: bytes=32 time=9ms TTL=120

Ping statistics for 216.58.223.238:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 9ms, Maximum = 57ms, Average = 26ms

如何从 cmd window 复制此代码并使用 python 保存到文本文件?

我认为最简单的解决方案是将输出转发到文件中。
ping -n 20 {ip_addr} >output.txt
(做“>>”追加而不是覆盖)
此外,您应该使用 subprocess.Popen() 而不是 os.system() 作为良好习惯。 然后您可以像往常一样打开文本文件并执行您想要的操作。\

编辑
如果您在命令行上执行 ls > output.txt,您通常在终端中看到的文本将写入“>”运算符之后的文件。做 subprocess.Popen("ping -n 20 {} >> output.txt".format(ip),shell=True) 本质上是一样的。 (我在这种情况下使用 >>,不是每次都用最新的输出覆盖文件,而是附加新内容)

import subprocess 
with open ('ip-source.txt') as file:
      test = file.read()
      test = test.splitlines()
      for ip in test:
          subprocess.Popen('ping -n 20 {} >> ping_output.txt'.format(ip),shell=True)


我希望这是您正在寻找的解决方案,我理解正确。
此致,拉斯