我使用下面的方法在csv的整个文件夹中读取。这些csv每天都被放到一个文件夹中,并反映已经发生的活动。当没有活动发生时,csv是空的,并且仍然有1KB的大小。如何使用此脚本跳过仍然具有文件大小的空文件?目前,我得到了错误:
EmptyDataError: No columns to parse from file当前代码:
os.chdir('file_path')
file_extension = '.csv'
all_filenames = [i for i in glob.glob(f"*{file_extension}")]
df = pd.concat([pd.read_csv(t) for t in all_filenames], ignore_index=True,sort=False,axis=0)发布于 2022-09-15 15:54:08
您可以始终处理异常,并生成将输入到concat函数中的数据文件列表。也许有一种方法可以把这个写成一个我不知道的人。下面是长篇版本:
os.chdir('file_path')
file_extension = '.csv'
all_filenames = [i for i in glob.glob(f"*{file_extension}")]
all_dataframes = []
for t in all_filenames:
try:
df = pd.read_csv(t)
all_dataframes.append(df)
except pd.io.common.EmptyDataError:
print("empty csv encountered")
# if for some reason you would prefer an empty dataframe
#df = pd.DataFrame()
#all_dataframes.append(df)
df = pd.concat(all_dataframes, ignore_index=True,sort=False,axis=0)发布于 2022-09-15 18:12:45
按照How to check whether a file is empty or not的公认答案,我们可以知道一个文件是否真的是空的,只需忽略它。
我想你的文件看起来是这样的:
file1.csv
=========
Col1,Col2
a,1
b,2
file2.csv
=========
file3.csv
=========
Col1,Col2
c,3
d,4the是空的,没有头文件,否则Pandas就不会抛出“没有要从文件中解析的列”异常。
import glob
import os
import pandas as pd
file_extension = ".csv"
all_filenames = []
for csv_file in glob.glob(f"*{file_extension}"):
if os.stat(csv_file).st_size == 0:
continue
all_filenames.append(csv_file)
df = pd.concat([pd.read_csv(t) for t in all_filenames], ignore_index=True, sort=False, axis=0)我得到了:
Col1 Col2
0 a 1
1 b 2
2 c 3
3 d 4https://stackoverflow.com/questions/73733588
复制相似问题