【问题标题】:Upload file to S3 - Got error message I/O operation on closed file将文件上传到 S3 - 收到错误消息 I/O 操作关闭的文件
【发布时间】:2022-12-13 06:35:45
【问题描述】:

我想从 Glue 上传 2 个文件到我的 S3,第一个文件成功上传到 s3 而不是第二个,这是代码 sn-p :

def backup_report(filename):
    with io.BytesIO() as output:
        with pd.ExcelWriter(output, engine='xlsxwriter') as writer:
        # -------  insert metrics that x need calculation -------
            op_AdReq_fnl.to_excel(writer, sheet_name='weekly', index=True, startcol=0, startrow=2, header=True)
            op_dirt_imps.to_excel(writer, sheet_name='weekly', index=True, startcol=0, startrow=8, header=False)
            op_prog_imps.to_excel(writer, sheet_name='weekly', index=True, startcol=0, startrow=12, header=False)
            op_hse_imps.to_excel(writer, sheet_name='weekly', index=True, startcol=0, startrow=16, header=False)
            op_FillRt_fnl.to_excel(writer, sheet_name='weekly', index=True, startcol=0, startrow=29, header=False)
            op_dirt_rvn.to_excel(writer, sheet_name='weekly', index=True, startcol=0, startrow=57, header=False)
            op_prog_rvn.to_excel(writer, sheet_name='weekly', index=True, startcol=0, startrow=61, header=False)
    
            workbook  = writer.book
            worksheet = writer.sheets['weekly']

     writer.save()
     output.seek(0)
     
     #Upload files
     s3.upload_fileobj(output, args['bucket_name'] , args['key_name'] + 'file1_{0}_{1}.xlsx'.format(rpt_name_start, rpt_name_end))

     s3.upload_fileobj(output, args['bucket_name'] , args['key_name'] + 'file1_backup.xlsx')

     writer.close()

有什么办法可以做到这一点?谢谢!

【问题讨论】:

  • 您正在对一个已关闭的文件调用 writer.save()output.seek(0)
  • 抱歉,介意多解释一下。

标签: python pandas amazon-web-services amazon-s3 aws-glue


【解决方案1】:

尝试缩进 writer.save() 和之后的操作。 python 将在操作后自动关闭文件,因此错误的缩进意味着他们实际上已经关闭了文件,并且您正在尝试在关闭文件后再次执行 writer.save()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多