2016-10-05 6 views
-1

CSVファイルを開き、指定されたリストに従っていくつかの行を削除しようとしていますが、同じ進行状況で今後の使用のためにそれらの行を数えたいと思います。行を削除して同じファイルを開いて数える方法

各ファイルのオープンは別々に優れていますが、同じオープンファイルの進行状況をどのように組み合わせることができますか?

私の現在のコードは次のとおりです。

# read latest file and count rows 

with open(fileslst[-1], 'rb') as csvfile: 
csvReader = csv.reader(csvfile) 
for row in csvReader: 
    for alert in alertsCode: 
     if any(alert in row[11] for s in alertsCode) : 
      counter=counter+1 
print (str(counter)+" unnecessary codes in this file") 


#open and modify the latest file 

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

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

私はそれが動作していないのと同じスクリプトで実行しますが、個別に実行するとします。

私は間違っていますか?

+0

を最適化することができるが、これは一つの解決策かもしれない問題のあなたの最初の記述に従って意味ですか? – Goyo

+0

私はカウンターのオープンファイルを実行するとき - それは仕事です、私は行を削除するためのファイルを開くとき、それは仕事です...しかし、私は同じスクリプトで両方を実行するときではありません! –

+0

スクリプトは動作するのではなく、何をしますか? – Goyo

答えて

0

それはきっと、「それは働いていない」はどのような

excluded = ['your excluded list here'] 
deleted_rows = 0 
with open(file) as read: 
    with open(file2) as write: 
     w = csv.writer(write) 
     r = csv.reader(read) 
     for row in r: 
      if row not in excluded: 
       w.writerow(row) 
      else: 
       deleted_rows += 1 
+0

しかし、私は同じファイルでそれを行う必要があります... "IOError:書き込み用にファイルが開かれていません" –

+0

元のファイルを削除し、その後新しく生成されたファイルに置き換えることはできません?あなたがPythonでcsvファイルを解析するための方法は、入力と出力ファイルを持つことです。入力ファイルを削除して置き換えることはできません。 –

+0

私はちょうど別の理由でそれを取得していないと一緒に動作しません。 –

関連する問題