Boto3上传到S3:从.csv文件中截断最后几行数据

时间:2017-07-31 16:48:32

标签: python csv amazon-s3 boto3

当我使用boto3(Python)上传.csv文件时,最后几行数据被切断。文件大小为268KB,对于非分段上传而言不应太大。这是我的代码:

import boto3 
s3 = boto3.client('s3') 
s3 = boto3.resource('s3')
s3.meta.client.upload_file(report_file.name, 'raw-data-bucket', 'Reports/report.csv') 

*这些不是我使用的确切铲斗和路径,但在这种情况下它们无关紧要

任何帮助都会得到满足。

3 个答案:

答案 0 :(得分:0)

看起来这个人有同样的问题

256kb stackoverflow similar problem

另外,他们在boto3 here

中提供了多上传部分

答案 1 :(得分:0)

坚持使用一项服务(资源或客户)。

# Using boto3 service client
import boto3 
s3 = boto3.client('s3') 
s3.upload_file('your_local_file_path", 'bucket_name', 'prefix_filename_to_s3') 

对于服务资源

import boto3 
s3 = boto3.resource('s3')
s3.Object('bucket_name', 'you_local_file_path').upload_file('prefix_filename_to_s3')

再次检查" report_file.name"的内容。 S3.upload_file用作GIGO(垃圾中的垃圾),它不会截断数据。

(更新) 经过进一步检查,there is another case我不确定它们是否相关。有人建议使用httppretty模块boto3不是线程安全的,你应该更新你的boto3版本并禁用该线程。

 from boto3.s3.transfer import TransferConfig
    config = TransferConfig(use_threads=False)
    client.download_file(Bucket="mybucket",
      Key="foo/bar.fastq.gz", Filename="bar.fastq.gz", Config=config)

答案 2 :(得分:0)

在使用.upload_file()之前,您是否关闭了要上传到S3的文件?我的* .CSV文件问题完全相同,并通过在上载文件之前显式关闭每个文件来解决该问题,并且此问题已解决。不再截断* .CSV文件。