【发布时间】:2019-03-05 14:16:08
【问题描述】:
我正在尝试读取一个包含 300 台计算机 ips 的文件,然后写入一个新文件(如果存在或不存在)。
import os
import datetime
import platform
import subprocess
date = datetime.datetime.now()
day = date.day
hour = date.hour
os.chdir ('Path')
openips = open ("ips.txt","r")
ipfile = openips.readlines()
print (ipfile)
for ips in ipfile():
ips = ips.strip()
print (ips)
args = ["ping", "-n", "4", "-l", "1", "-w", "1000", ips]
pping = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
for line in pping.stdout:
print (line)
os.chdir ('Path')
presult = open ("pingresults_{}_{}.txt".format(day,hour), 'a')
presult.write ('{}_{}\n'.format(ips, line))
presult.close ()
不知道为什么,每次我测试我的代码。 . .结果是:
TypeError: 'list' 对象不可调用
我已经尝试了所有方法,即使我将变量更改为 string 也是如此。 . .说同样的,只是改变字符串的列表
【问题讨论】:
-
您需要在问题中提供完整的回溯(不仅仅是最终错误)。
-
也使用标准的 tcp 或 udp 连接到 python 而不是“ping”,这是一个非常慢的程序测试端口 0(可以关闭)。还要为每个连接测试生成一个线程,因为您的程序可以没有很多“等待”时间。
-
@thebjorn 很抱歉,下次我会写所有的回溯
-
@ege 谢谢你的建议,我会考虑的。 . .真的,我只是想知道装备是否还活着(比如真假),不关心其他任何事情。但再次感谢,我会考虑使用 tcp 或 udp。
标签: python python-3.x subprocess ping