从s3 node.js读取文本文件-开头缺少某些部分

velaa5lx  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(356)

我是aws和node.js的新手。我将一个224x224x3数组写入一个文本文件,并将其保存在一个s3存储桶中。我需要在node.js中编写的另一个lambda函数中读取该文本文件,并将该数组分配给一个变量。但似乎有时阵列的某些部分在开始时就丢失了。
下面是我用来将数组存储到文本文件中的python代码。请注意,returnarr是一个224x224x3列表。

with open("/tmp/out.txt", "w") as file:
     file.write(str(returnArr))
     file.close()
s3 = boto3.resource('s3')
BUCKET = "tempimagebucket1"
s3.Bucket(BUCKET).upload_file("/tmp/out.txt", "out.txt")

下面是我用来读取存储在文本文件中的数组的node.js代码。

const AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = async (event, ctx, callback) => {
     var params1 = {Bucket: 'tempimagebucket1', Key: 'out.txt'};
     await s3.getObject(params1 , function (err, data1) {
       if (err) {
          console.log(err);
       } else {
          console.log("array : ",data1.Body.toString()); //Line 1
          img = data1.Body.toString();
       }
    }).promise(); 
}

问题-有时第1行给出的数组不完整(数组的某些部分在开始时丢失)。
有时它会成功地提供完整的阵列。
请注意,存储在文本文件中的数组始终是完整的。因此,问题应该在node.js lambda函数中。
以下是一些未完成的输出(第1行输出)。
读取数组在不同的时间是不同的。
数组:57,27]、[92,43,13]、[89,41,11]、[90,43,14]、[89,44,18]、[79,37,15]、[59,26,8]、[48,27,11]、[111,66,33]、[118,77,40]。。。
数组:72]、[164、120、73]、[153、105、61]、[140、89、44]、[142、91、43]、[156、107、60]、[156、108、62]、[164、116、69]、[171、123、77]、[161、112、67]、[160、111、67]。。。
但它应该像下面这样-输出应该是一个完整的3d阵列
数组:[[107,90,72],[96,79,62],[86,69,52],[59,43,28],[43,26,15],[50,32,20],[58,38,21],[77,46,25],[81,50,22],[96,65,39]。。。
我想不出原因。有人能帮我吗?
非常感谢。

jexiocij

jexiocij1#

您的函数和测试文件是正确的。但是,我明白你所说的缺少开头是什么意思:

这只是控制台修剪输出。您可以按load more,您将看到全文:

相关问题