[英]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)
您可以使用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.