2017-07-25 14 views
1

文字列を含むすべての行をテキストファイルから作成しようとしています。これは私のコードです:テキストファイルからCSVファイルへの書き込み

import os 
import glob 
import csv 
import re 

#Defining Keyword 
keyword = '2012-07-02' 

#Code to merge all relevant LOG files into one file and insert 
with open('Combined-01022012.txt' , 'w', newline = '') as combined_file: 
    csv_output = csv.writer(combined_file) 
    for filename in glob.glob('FAO_Agg_2012_Part_*.txt'): 
     with open(filename, 'rt', newline = '') as f_input: 
     #with gzip.open((filename.split('.')[0]) + '.gz', 'rt', newline='') as f_input: 
      csv_input = csv.reader(f_input) 
      for row in csv_input: 
       row.insert(0, os.path.basename(filename)) 
       try: 
        if keyword in row[2]: 
         csv_output.writerow(row) 
       #row.insert(0, os.path.basename(filename)) 
       #csv_output.writerow(row) 
       except: 
        continue 
      continue 

すべてが正しいと思われ、コードは実行されますが、何も私のテキストファイルに書き込まれません。何がうまくいかないでしょうか?

+0

インデントを修正します。 –

+0

writerow()コールの横にトレースを追加して、少なくともそこに到達しているかどうかを確認しましたか? あなたが実際にインデントを修正する必要がある場合は、小さなサンプルファイルを提供して、達成しようとしていることを確認してください –

答えて

2

あなたの主な問題は、行にあります。

row.insert(0, os.path.basename(filename)) 
try: 
    if keyword in row[0]: 
     csv_output.writerow(row) 
except: 
    continue 

あなたは、本質的に、あなたの行の最初のエントリとして、現在のファイルのあなたの親フォルダ名を挿入し、その後、あなたがしている非常に次の行にしていますそのエントリ(row[0])にkeywordが含まれているかどうかを確認してください。親フォルダにkeyword2012-07-02)が含まれていない限り、条件はTrueと評価されません。また、空白exceptを使用すると、非常に、非常に悪い考えです

if keyword in row[0]: 
    csv_output.writerow([os.path.basename(filename)] + row) 

:私はこれをミックスしたいです。特定の例外をキャプチャする場合は、except句で定義します。

関連する問題