我可以在python中使用boto 3从S3 bucket中读取多个csv文件,并最终将这些文件合并到pandas中的单个dataframe中。然而,在某些文件夹中有一些空文件,导致错误“No columns to parse from file”。我们可以跳过下面代码中的空文件吗?
s3 = boto3.resource('s3')
bucket = s3.Bucket('testbucket')
prefix_objs = bucket.objects.filter(Prefix="extracted/abc")
prefix_df = []
for obj in prefix_objs:
key = obj.key
body = obj.get()['Body'].read()
temp = pd.read_csv(io.BytesIO(body),header=None, encoding='utf8',sep=',')
prefix_df.append(temp)
字符串
我已经使用了这个ans [https://stackoverflow.com/questions/52855221/reading-multiple-csv-files-from-s3-bucket-with-boto3][1]
2条答案
按热度按时间pieyvz9o1#
字符串
nnsrf1az2#
我得到了与使用相同代码的OP相同的错误。当我执行下面的代码来打印存储桶(testbucket)中的文件夹(inputfiles)中所有对象的名称时,我看到列出了3个键,尽管我只有2个对象。最后两个键列出了文件夹中的文本文件,这是我感兴趣的,而第一个键指向包含两个csv文件的文件夹。
字符串
错误原因:“No columns to parse from file”,是for循环试图解析文件夹,而文件夹没有与之关联的“body”。当我们像下面这样使用try和exempt块时,代码会按预期执行,并打印出导致错误的键的名称。
型