我将一个文件夹中的所有文件逐个读入DataFrame,然后检查它们是否存在某些情况。有几千个文件,我想在文件为空时让pandas引发异常,这样我的读者功能就会跳过这个文件。
我有类似的东西:
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 ...”行。如何让程序跳过空文件?
答案 0 :(得分:6)
我首先检查文件是否为空,如果它不是空的,我将尝试将其与pandas一起使用。 在这里: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
答案 1 :(得分:3)
你不应该使用pandas,而是直接使用python库。答案是:python how to check file empty or not
答案 2 :(得分:1)
您可以使用以下代码完成工作,只需将CSV路径添加到路径变量,然后运行即可。你应该得到一个对象 raw_data 这是一个Pandas数据帧。
float proportionalHeight = getScreenWidth(yourViewHeight.getHeight(), yourViewWidth.getWidth());
if (proportionalHeight > 380) {
proportionalHeight = 380;
}
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, proportionalHeight, resources.getDisplayMetrics());
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) px);
yourMainView.setLayoutParams(params);
private float getScreenWidth(int height, int width) {
Configuration configuration = getActivity().getResources().getConfiguration();
float screenWidthDp = configuration.screenWidthDp;
float check = (float) height / width;
Log.e("TAG", "getScreenWidth: " + screenWidthDp);
Log.e("TAG", "return: " + check * screenWidthDp);
return check * screenWidthDp;
}
答案 3 :(得分:1)
关于
files = glob.glob('*.csv')
files = list(filter(lambda file: os.stat(file).st_size > 0, files))
data = pd.read_csv(files)