testDict = [{'fieldA': '8', 'fieldB': None, 'fieldC': '888888888888'}, {
    'fieldA': '9', 'fieldB': None, 'fieldC': '99999999999'}]
fieldnames = ['fieldA', 'fieldB', 'fieldC']
f = io.StringIO()
with smart_open.smart_open('s3://dev-test/bar/foo.csv', 'wb') as fout:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
fout.write(f.getvalue())
for row in testDict:
    f.seek(0)
f.truncate(0)
writer.writerow(row)
fout.write(f.getvalue())
f.close()
Можете ли вы загрузить на S3, используя поток, а не локальный файл?