2016-03-21 5 views
2

1つのフォルダ内のすべてのファイルを1つずつDataFrameに読み込んだ後、条件をチェックします。数千のファイルがあります。私は、ファイルが空のときにパンダが例外を発生させて、自分の読者がこのファイルをスキップするようにしたいと考えています。Pythonでパンダで空のファイルを読むのをスキップする方法

私が何かのように持っている:私はいくつかの条件を探してる

class StructureReader(FileList): 
    def __init__(self, dirname, filename): 
     self.dirname=dirname 
     self.filename=str(self.dirname+"/"+filename) 
    def read(self): 
     self.data = pd.read_csv(self.filename, header=None, sep = ",") 
     if len(self.data)==0: 
      raise ValueError 
class Run(object): 
    def __init__(self, dirname): 
     self.dirname=dirname 
     self.file__list=FileList(dirname) 
     self.result=Result() 
    def run(self): 
     for k in self.file__list.file_list[:]: 
      self.b=StructureReader(self.dirname, k) 
      try: 
       self.b.read() 
       self.b.find_interesting_bonds(self.result) 
       self.b.find_same_direction_chain(self.result) 
      except ValueError: 
       pass 

通常のファイルは次のようになります。

"A/C/24","A/G/14","WW_cis",, 
"B/C/24","A/G/15","WW_cis",, 
"C/C/24","A/F/11","WW_cis",, 
"d/C/24","A/G/12","WW_cis",, 

しかし、どういうわけか、私が今までValueErrorが提起されませんし、私の機能空のファイルを検索しています。結果ファイルに空のDataFrame ...行がたくさんあります。空のファイルをスキップする方法を教えてください。

+0

これはこれではありません:http://stackoverflow.com/questions/2507808/python-how-to-check-file-empty-or-not – EdChum

答えて

3

私はまずファイルが空であるかどうかをチェックし、空でなければ私はパンダでそれを使用しようとします。ここ :https://stackoverflow.com/a/15924160/5088142ファイルが空であるかどうかを確認するための良い方法を見つけることができます。

import os 
def is_non_zero_file(fpath): 
    return True if os.path.isfile(fpath) and os.path.getsize(fpath) > 0 else False 
0

あなたはあなたの仕事は、次のコードを使用して成し遂げることができ、ちょうどパス変数にあなたのCSVパスを追加し、実行します。 raw_dataというオブジェクトを取得する必要があります。これはPandasデータフレームです。

import os, pandas as pd, glob 
import pandas.io.common 

path = "/home/username/data_folder" 
files_list = glob.glob(os.path.join(path, "*.csv")) 

for i in range(0,len(files_list)): 
    try: 
     raw_data = pd.read_csv(files_list[i]) 
    except pandas.io.common.EmptyDataError: 
     print(files_list[i], " is empty and has been skipped.") 
関連する問題