【发布时间】:2020-11-18 17:55:04
【问题描述】:
我有一个包含大约 500 个 csv 文件的源 s3 存储桶,我想将这些文件移动到另一个 s3 存储桶,并且在移动之前我想清理数据,因此我试图将其读取到 pandas 数据帧。我的代码工作正常并返回几个文件的数据帧,然后它突然中断并给我错误“EmptyDataError: No columns to parse from file”。
sts_client = boto3.client('sts', region_name='us-east-1')
client = boto3.client('s3')
bucket = 'source bucket'
folder_path = 'mypath'
def get_keys(bucket,folder_path):
keys = []
resp = client.list_objects(Bucket=bucket, Prefix=folder_path)
for obj in resp['Contents']:
keys.append(obj['Key'])
return keys
files = get_keys(bucket,folder_path)
print(files)
for file in files:
f = BytesIO()
client.download_fileobj(bucket, file, f)
f.seek(0)
obj = f.getvalue()
my_df = pd.read_csv(f ,header=None, escapechar='\\', encoding='utf-8', engine='python')
# files dont have column names, providing column names
my_df.columns = ['col1', 'col2','col3','col4','col5']
print(my_df.head())
提前致谢!
【问题讨论】:
-
手动下载坏文件看看
标签: python pandas amazon-web-services csv amazon-s3