当我使用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')
*这些不是我使用的确切铲斗和路径,但在这种情况下它们无关紧要
任何帮助都会得到满足。
答案 0 :(得分:0)
答案 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文件。