这是我的代码。
import boto3
import pandas as pd
import requests
from io import StringIO
campaign_buffer=StringIO()
r = requests.get('https://.... output=csv....')
if r.status_code==200:
r.encoding='utf-8'
request_txt = r.text
campaigns = StringIO(request_txt)
campaigns_pd = pd.read_csv(campaigns, sep=",")
campaigns_pd.columns=campaigns_pd.columns.str.replace(':','_')
campaigns_pd.drop('images_thumb', inplace=True, axis=1)
campaigns_pd.to_csv(campaign_buffer)
else:
print('error')
bucket = 'name'
key = 'folder/test.csv'
client = boto3.client('s3')
client.upload_fileobj(campaign_buffer, bucket, key)
Run Code Online (Sandbox Code Playgroud)
最后一行代码导致错误:TypeError: Unicode-objects必须在散列之前进行编码
有什么想法如何解决这个问题吗?
您正在写入StringIO()没有内在编码的 a ,并且您无法写入无法编码为 S3 中的字节的内容。要执行此操作,无需重新编码您写入的内容campaing_buffer:
campaign_bufferaBytesIO()改为 aStringIO()mode="wb"和添加encoding="UTF-8"到to_csv通话中campaign_buffer.seek(0)回内存中的文件| 归档时间: |
|
| 查看次数: |
7177 次 |
| 最近记录: |