簡體   English   中英

將輸出獲取到 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)

在此處輸入圖片說明

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM