【问题标题】:Ping a CSV file of IP Adresses in Python在 Python 中 Ping 一个 IP 地址的 CSV 文件
【发布时间】:2020-02-13 19:11:31
【问题描述】:

初学者有一个初学者问题:我正在尝试构建一个 python 程序来 ping 一个 ip 地址的 csv 文件。

这个脚本几乎就在那里,但是当我将 csv 数据转换为列表并使用 for 循环时 在它上面......括号和引号保留在IP地址['10.10.10.1']中,这阻止了我ping。

我知道有很多方法可以从列表项中删除引号/方括号,但这里哪种方法最有效?

我想我快到了,有什么简单的解决方案?

import os
import csv

csvFile = open('hosts.csv')
csvReader = csv.reader(csvFile)
csvData = list(csvReader)

for ip in csvData:
    response = os.system('ping ' + str(ip))
    if response == 0:
        print(ip, 'is up')
    else:
        print(ip, 'is down')

【问题讨论】:

    标签: python-3.x networking network-programming ip ping


    【解决方案1】:

    您实际上是在使用 csvData = list(csvReader) 行将列表嵌入到列表中。

    csv.reader() 为从 csv 文件中读取的每一行返回一个字符串列表。因此,如果您的文件中有多行,您最终会得到 n 行列表。

    如果您的文件有多行,第一个 for 循环将处理。第二个for 循环将解析csv.reader() 返回的列表。

    此外,您的 ping 语句将继续 ping。您可能会遇到其他意想不到的问题,但这是另一个问题。

    试试这个:

    import os
    import csv
    
    with open('hosts.csv') as csvfile:
      reader = csv.reader(csvfile)
      for line in reader:
        for ip in line:
          response = os.system('ping -c 1 ' + str(ip))
          if response == 0:
            print (ip, ' is up')
          else:
            print (ip, ' is down')
    

    参考文献

    Python3 CSV
    Pinging Servers in Python

    【讨论】:

    • 感谢肯的回复,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    相关资源
    最近更新 更多