Функция добавляет строки в .csv - PullRequest
2 голосов
/ 10 февраля 2012

Прошло некоторое время с тех пор, как я написал функции для циклов for и записи в файлы, настолько обнаженные от моего незнания.

Эта функция получает IP-адрес для чтения из текстового файла;пингует 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 ]

1 голос
/ 10 февраля 2012

По-моему, это, по крайней мере, делает происходящее немного более очевидным.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 модуль для записи в csv.В этом случае это довольно тривиально.

0 голосов
/ 10 февраля 2012

Это может быть не прямой ответ, но вы можете получить некоторое увеличение производительности от использования StringIO. У меня было несколько резких ускорений в IO с этим. Я парень по биоинформатике, поэтому я трачу много времени на съемку больших текстовых файлов из моего кода.

http://www.skymind.com/~ocrow/python_string/

Я использую метод 5. Не требует много изменений. Там есть несколько причудливых методов, но они мне не очень понравились.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...