如何解决正在将输出获取到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)
解决方法
您可以使用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下,请在+ '> /dev/null'
调用中添加os.system
。
请尝试以下程序
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。