Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在AWS S3上附加到json文件_Python_Json_Amazon S3_Append - Fatal编程技术网

Python 如何在AWS S3上附加到json文件

Python 如何在AWS S3上附加到json文件,python,json,amazon-s3,append,Python,Json,Amazon S3,Append,我需要在aws S3上附加一个json文件,python代码正在EC2实例上运行 在本地设置中,我可以轻松地执行以下操作: import json #example data json_data = {"id": "123", "name": "XYZ", "transaction": [20.0, 30.0]} # path local_path = '/home/ubuntu/test.json' with open(local_path, 'a', encoding='utf-8-si

我需要在aws S3上附加一个json文件,python代码正在EC2实例上运行

在本地设置中,我可以轻松地执行以下操作:

import json

#example data
json_data = {"id": "123", "name": "XYZ", "transaction": [20.0, 30.0]}
# path
local_path = '/home/ubuntu/test.json'

with open(local_path, 'a', encoding='utf-8-sig') as file:
    json.dump(json_data, file)
    file.write('\n')
    file.close()
import boto
s3_open = boto.connect_s3(host='s3.eu-central-1.amazonaws.com')
在EC2上,我可以按如下方式连接到S3:

import json

#example data
json_data = {"id": "123", "name": "XYZ", "transaction": [20.0, 30.0]}
# path
local_path = '/home/ubuntu/test.json'

with open(local_path, 'a', encoding='utf-8-sig') as file:
    json.dump(json_data, file)
    file.write('\n')
    file.close()
import boto
s3_open = boto.connect_s3(host='s3.eu-central-1.amazonaws.com')
我定义了S3的路径:

s3_path = 's3://my-bucket/test.json'

如何使用上述逻辑附加到此文件?

S3没有附加操作。您可以下载文件,自己附加,然后将其作为同一对象的新版本上载

沿着这条线的东西

import json
import boto3

s3_path = '/some/s3/path'
bucket = 'somebucket'
local_data = {"id": "123", "name": "XYZ", "transaction": [20.0, 30.0]}

s3 = boto3.client('s3')
resp=s3.get_object(Bucket=bucket, Key=s3_path)
data=resp.get('Body')

json_data = json.loads(data)
json_data.append(local_data)
s3.put_object(Bucket=bucket, Key=s3_path, Body=json.dumps(json_data).encode())

S3没有追加操作,您可以下载文件,自己追加,然后作为同一对象的新版本上载

沿着这条线的东西

import json
import boto3

s3_path = '/some/s3/path'
bucket = 'somebucket'
local_data = {"id": "123", "name": "XYZ", "transaction": [20.0, 30.0]}

s3 = boto3.client('s3')
resp=s3.get_object(Bucket=bucket, Key=s3_path)
data=resp.get('Body')

json_data = json.loads(data)
json_data.append(local_data)
s3.put_object(Bucket=bucket, Key=s3_path, Body=json.dumps(json_data).encode())

当你说append时,你的意思是添加到远程文件?或者添加到本地文件然后上传?S3没有追加操作。请添加到S3上承载的远程文件。如果S3没有追加操作,还有什么替代方法?下载并重新加载。。。例如,请参见答案当您说“附加”时,您的意思是“添加到远程文件”?或者添加到本地文件然后上传?S3没有追加操作。请添加到S3上承载的远程文件。如果S3没有追加操作,还有什么替代方法?下载并重新加载。。。参见答案示例