我是亚马逊网络服务和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();
}问题-有时第一行给出一个不完整的数组(数组的某些部分在开始时遗漏了)。
有时它会成功地给出完整的数组。
请注意,文本文件中存储的数组始终是完整的。所以问题应该出在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...
我想不出是什么原因。有人能帮帮我吗?
谢谢。
发布于 2021-07-27 16:36:03
您的函数和测试文件是正确的。然而,我明白你所说的错过开头的意思:

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

https://stackoverflow.com/questions/68540093
复制相似问题