2016-09-29 4 views
0

Я новичок в python и пытаюсь изменить файл csv, поэтому я могу удалить определенные строки с определенными полями в соответствии с заданным списком. в моем текущем коде я получаю строки, которые хочу удалить, но я не могу удалить их и сохранить изменения в том же файле (заменить).Как удалить всю строку в файле csv и сохранить изменения в одном файле?

import os, sys, glob 
import time ,csv 
# Open a file 
path = 'C:\\Users\\tzahi.k\\Desktop\\netzer\\' 
dirs = os.listdir(path) 
fileslst = [] 
alertsCode = ("42001", "42003", "42006","51001" , "51002" ,"61001" ,"61002","71001", 
      "71002","71003","71004","71005","71006","72001","72002","72003","72004", 
      "82001","82002","82003","82004","82005","82006","82007","83001","84001") 
# This would print the unnesscery codes 
for file in dirs: 
    if "ALERTS" in file.upper() : 
     fileslst.append(file) 
fileslst.sort() 

with open(fileslst[-1], 'rb') as csvfile: 
    csvReader = csv.reader(csvfile) 
    for row in csvReader: 
     for alert in alertsCode: 
      if any(alert in row[2] for s in alertsCode) : 
      print row 

любая помощь?

ответ

3

Прочитайте все строки в списке, используя список , содержащий список и исключая нежелательные строки. Тогда переписывает строки в w (режим записи) файл в режиме, который переписывает или заменяет содержимое файла:

with open(fileslst[-1], 'rb') as csvfile: 
    csvReader = csv.reader(csvfile) 
    clean_rows = [row for row in csvReader if not any(alert in row[2] for alert in alertsCode)] 
    # csvfile.truncate() 

with open(fileslst[-1], 'wb') as csvfile: 
    csv_writer = csv.writer(csvfile) 
    csv_writer.writerows(clean_rows) 
+0

есть причина для чтения и записи в двоичной системе (' 'rb'', '' wb'') режим? –

+0

@ Ev.Kounis Нет причин в частности. Только после приоритета OP –

+0

отлично работает !!! спасибо, я рад, что это –