仅当主机在python中可ping时,才尝试将主机写入csv
我有一个IP地址列表 我正在尝试将所有实时IP地址写入一个csv文件,但我没有任何运气 我可以将实时地址打印到标准输出,但无法将其写入csv 我的csv读写器对象有两个不同的函数(以防我以后要导入它们),但这不起作用 然后,我尝试将两者放在一个函数中,但对于如何将实时地址从stdout获取到csv文件,我有点困惑 我知道我可以删除else语句 我的代码片段:仅当主机在python中可ping时,才尝试将主机写入csv,python,python-3.x,csv,Python,Python 3.x,Csv,我有一个IP地址列表 我正在尝试将所有实时IP地址写入一个csv文件,但我没有任何运气 我可以将实时地址打印到标准输出,但无法将其写入csv 我的csv读写器对象有两个不同的函数(以防我以后要导入它们),但这不起作用 然后,我尝试将两者放在一个函数中,但对于如何将实时地址从stdout获取到csv文件,我有点困惑 我知道我可以删除else语句 我的代码片段: def readCsv(): with open("random.csv", "r") as csvFile: c
def readCsv():
with open("random.csv", "r") as csvFile:
csvReader = csv.reader(csvFile)
for hosts in csvReader:
cmd = subprocess.call(["ping", "-n", "1", hosts[0]], stdout=subprocess.PIPE)
if cmd == 0:
<The live hosts will need to go to the csv>
else:
<leave the dead hosts out of the csv>
with open("liveHosts.csv", "w", newline="") as new_csv:
csvWriter = csv.writer(new_csv, dialect="excel")
for line in csvWriter:
csvWriter.writerows(line)
readCsv()
def readCsv():
打开(“random.csv”、“r”)作为csvFile:
csvReader=csv.reader(csvFile)
对于csvReader中的主机:
cmd=subprocess.call([“ping”、“-n”、“1”、hosts[0]],stdout=subprocess.PIPE)
如果cmd==0:
其他:
以open(“liveHosts.csv”,“w”,newline=“”)作为新的\u csv:
csvWriter=csv.writer(new_csv,dialogue=“excel”)
对于csvWriter中的行:
csvWriter.writerows(第行)
readCsv()
可以使用与包含主机列表的输入文件相同的上下文管理器将流打开到输出文件
然后为流创建一个CSV编写器。
在子流程成功返回的条件下,您可以将一行写入CSV文件
with open("random.csv", "r") as allhosts, \
open("liveHosts.csv", "w", newline="") as livehosts:
csvReader = csv.reader(allhosts)
csvWriter = csv.writer(livehosts, dialect="excel")
for host in csvReader:
cmd = subprocess.call(["ping", "-n", "1", host[0]], stdout=subprocess.PIPE)
if cmd == 0:
csvWriter.writerow(host)
注意:你可以用你的问题来添加内容,而不是评论。是的,但是写块也被破坏了。谢谢你编辑我的函数。Blorgbeardh怎么会这样?这只是我的间隔吗@MarsCan你能举个例子说明你希望你的输出是什么样的吗?