函数将行附加到.csv

时间:2012-02-09 23:18:50

标签: python function text-files

已经有一段时间了,因为我已经用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()

注意:如果您需要完整的脚本,我也可以提供。

2 个答案:

答案 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.不需要很多更改。那里有一些更高级的方法,但它们对我没那么吸引力。