如何跳过用Python中的熊猫读取空文件
问题描述:
我将一个文件夹中的所有文件逐个读入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
提高了,而我的功能正在搜索空文件,这在我的结果文件中给了我很多“Empty DataFrame ...”行。我如何让程序跳过空文件?
答
我首先检查文件是否为空,如果不是空的,我会尝试在熊猫中使用它。 这里: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
答
您可以让您的工作与下面的代码完成,只需添加您的CSV路径路径变量,并运行。你应该得到一个对象raw_data这是一个熊猫数据框。
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.")
是不是这是一个骗局:http://stackoverflow.com/questions/2507808/python-how-to-check-file-empty-or-not – EdChum