已经有一段时间了,因为我已经用for循环编写了函数,并且因为我的无知而写入文件。
该函数具有从文本文件中读取的IP地址; ping IP,搜索收到的数据包,然后将其附加到.csv
我的问题是:有更好或更简单的方式来写这个吗?
def pingS (IPadd4):
fTmp = "tmp"
os.system ("ping " + IPadd4 + "-n 500 > tmp")
sName = siteNF #sys.argv[1]
scrap = open(fTmp,"r")
nF = file(sName,"a") # appends
nF.write(IPadd4 + ",")
for line in scrap:
if line.startswith(" Packets"):
arrT = line.split(" ")
nF.write(arrT[10]+" \n")
scrap.close()
nF.close()
注意:如果您需要完整的脚本,我也可以提供。
答案 0 :(得分:1)
在我看来,这至少会让事情变得更加明显。 len('Received =')显然可以用常量替换。
def pingS (IPadd4):
fTmp = "tmp"
os.system ("ping " + IPadd4 + "-n 500 > tmp")
sName = siteNF #sys.argv[1]
scrap = open(fTmp,"r")
nF = file(sName,"a") # appends
ip_string = scrap.read()
recvd = ip_string[ip_string.find('Received = ') + len('Received = ')]
nF.write(IPadd4 + ',' + recvd + '\n')
您也可以尝试查看Python csv
module以写入csv。在这种情况下,它是非常微不足道的。
答案 1 :(得分:-1)
这可能不是直接的答案,但使用StringIO可能会提高性能。我已经在IO中获得了一些显着的加速。我是一名生物信息学家,所以我花了很多时间从我的代码中拍摄大文本文件。
http://www.skymind.com/~ocrow/python_string/
我使用方法5.不需要很多更改。那里有一些更高级的方法,但它们对我没那么吸引力。