Я пытаюсь записать значение моего Bucket.name и obj.key в файл csv с соответствующим значением в соответствующем столбце.
Когда я запускаю приведенный ниже код, он выводит только одну строку в мой CSV-файл:
bucket_name | key_s3_path
value , value
Однако вывод моей переменной ff:
{'bucket_name': ["'mybucket', "], 'key_s3_path'["'my/file/path/80ece.txt', "]}
{'bucket_name': ["'mybucket', "], 'key_s3_path': ["'my/file/path/80ece.txt', "]}
{'bucket_name': ["'mybucket', "], 'key_s3_path': ["'my/file/path/80ece.txt', "]}
Как видите, есть три значения, но в CSV-файл записывается только одно из трех значений.
Вот мой код:
def load_into_csv(years):
for year in years:
for buckett in s3.buckets.all():
for aobj in buckett.objects.filter(Bucket=bucket,Prefix=PREFIX):
if year in aobj.key:
f= "'{}', ".format(buckett.name)
ff= "'{}', ".format(aobj.key)
#print(f)
dd = {'bucket_name':[f], 'key_s3_path':[ff]}
#print(dd)
df = pd.DataFrame(data=dd)
#print(df)
export_csv = df.to_csv (r'my/path/0177_s3_files_v2.csv', index = None, header=True)
years=['2017']
load_into_csv(years)
ЛЮБЫЕ ИДЕИ относительно того, почему это происходит?
append
это не очень эффективный метод. Вы можете использовать список для хранения вашей переменнойdd
, а когда цикл закончится, создайте окончательный кадр данных. Смотрите мое редактирование 17.01.2020