将输出提取到 csv - python
Fetching output to csv - python
我创建了一个 python 脚本来通过 IP 测试多台服务器的 ping 状态,但我需要以附加格式导出到 CSV。有人可以帮忙吗。
with open('path_to_file/servers.json') as f:
data=json.load(f)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Create a TCP/IP socket
for ip_address in data:
rep=os.system('ping ' + ip_address)
if rep == 0:
print("Server %s is up" % ip_address)
else:
print("Server %s is down" % ip_address)
enter image description here
您可以使用 csv
模块。
例如:
import os
import csv
data = ['127.0.0.1', '0.0.0.1']
with open('servers.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(['IP address', 'Status'])
for ip_address in data:
rep = os.system('ping -c1 -w1 ' + ip_address)
if rep == 0:
status = 'success'
else:
status = 'failure'
writer.writerow([ip_address, status])
给予:
IP address,Status
127.0.0.1,success
0.0.0.1,failure
除了关于 CSV 的问题,我还添加了 ping
命令行选项 -c1
(只发送一个数据包)和 -w1
(最多等待一秒钟)正在使用,否则将无法完成。您可能还想抑制 ping
终端输出,例如在 Linux 下,在 os.system
调用中添加 + '> /dev/null'
。
请尝试以下程序
with open('path_to_file/servers.json') as f:
data=json.load(f)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Create a TCP/IP socket
with open("output.csv","w") as f:
f.write("IP address,status\n")
for ip_address in data:
rep=os.system('ping ' + ip_address)
if rep == 0:
f.write("%s,success\n" % ip_address)
else:
f.write("%s,failure\n" % ip_address)
我创建了一个 python 脚本来通过 IP 测试多台服务器的 ping 状态,但我需要以附加格式导出到 CSV。有人可以帮忙吗。
with open('path_to_file/servers.json') as f:
data=json.load(f)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Create a TCP/IP socket
for ip_address in data:
rep=os.system('ping ' + ip_address)
if rep == 0:
print("Server %s is up" % ip_address)
else:
print("Server %s is down" % ip_address)
enter image description here
您可以使用 csv
模块。
例如:
import os
import csv
data = ['127.0.0.1', '0.0.0.1']
with open('servers.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(['IP address', 'Status'])
for ip_address in data:
rep = os.system('ping -c1 -w1 ' + ip_address)
if rep == 0:
status = 'success'
else:
status = 'failure'
writer.writerow([ip_address, status])
给予:
IP address,Status
127.0.0.1,success
0.0.0.1,failure
除了关于 CSV 的问题,我还添加了 ping
命令行选项 -c1
(只发送一个数据包)和 -w1
(最多等待一秒钟)正在使用,否则将无法完成。您可能还想抑制 ping
终端输出,例如在 Linux 下,在 os.system
调用中添加 + '> /dev/null'
。
请尝试以下程序
with open('path_to_file/servers.json') as f:
data=json.load(f)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Create a TCP/IP socket
with open("output.csv","w") as f:
f.write("IP address,status\n")
for ip_address in data:
rep=os.system('ping ' + ip_address)
if rep == 0:
f.write("%s,success\n" % ip_address)
else:
f.write("%s,failure\n" % ip_address)