python - 使用 python 从 JSON 文件中删除一些特定对象,然后将文件推送到 Elasticsearch Index

标签 python elasticsearch boto amazon-sqs

我有一个包含许多对象的大型 json 文件。我试图从这个获取的文件中删除一定数量的对象,因为它们包含公钥和东西..只是为了引用,我有这样的东西命名为 download.json:

"osfamily": "Debian",
"sshrsakey":"Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2XXX",
"lsbmajdistrelease": "32",
"interfaces": "eth0,lo",
"physicalprocessorcount": 1,
"ec2_kernel_id": "pki-724545-724545",

我的 python 脚本从 SQS 队列下载上面的 json 文件并将其推送到 ES 服务器,如下所示:

import os
import json
import uuid
import time
import boto.sqs
import boto
from boto.sqs.connection import SQSConnection
from boto.sqs.message import Message
from boto.sqs.message import RawMessage

sqs = boto.sqs.connect_to_region("ap-southeast-1")
q = sqs.get_queue("Nishantqueue")

#text_file = open('download.json', 'w')
m = q.read(visibility_timeout=15)
if m == None:
  print "No message!"
else:
  with open('download.json', 'w') as json_data:
    print m.get_body()
    json_data.write(m.get_body())

#    clean_data = json.load(json_data)  ##
#    for element in clean_data:         ##
#      del element['sshdsakey','sshrsakey'] 
#      json_data.write(clean_data) ## 

    json_data.close()
    q.delete_message(m)
    print "Push To ES"
    os.system('./push_to_ES.sh')
    print "Cleaning the temporary json file"
    os.remove('download.json')
    print "++++++ SUCCESSFUL RUN +++++++"

现在正如您在评论部分看到的那样,我正在尝试删除我不想要的对象,然后将其写入 download.json 文件并推送到 ES 。这个评论部分没有按照我认为应该的方式工作,并抛出类似的东西:IOError: File not open for reading

任何帮助将不胜感激

最佳答案

以读写模式打开文件。

改变:-

以 open('download.json', 'w') 作为 json_data:

以 open('download.json', 'r+') 作为 json_data:

------------编辑----------------

为什么不只执行以下操作:-

clean_data = json.loads(m.get_body())
for element in clean_data:
  del element['sshdsakey','sshrsakey'] 

#write clean_data to download.json  
json_data.write(clean_data)

q.delete_message(m)
print "Push To ES"
os.system('./push_to_ES.sh')
print "Cleaning the temporary json file"
os.remove('download.json')
print "++++++ SUCCESSFUL RUN +++++++"

关于python - 使用 python 从 JSON 文件中删除一些特定对象,然后将文件推送到 Elasticsearch Index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32690517/

相关文章:

python - 多线程调用scipy.optimize.leastsq的目标函数

search - ElasticSearch:如何将术语查询与通配符混合使用

python - 如何使用 Boto 和 Python 获取任何特定 AWS 资源的 IAM 用户所有者?

python - 获取 EB 工作线程中的当前实例 ID - BOTO Python

pycharm - 属性错误 : partially initialized module 'boto3' has no attribute 'resource' (most likely due to a circular import)

python - scrapy 和相对路径

Python 在前面添加一个字典列表

python - 如何将字符串转换为int? dtype ("O")-值错误: invalid literal for int() with base 10: ''

elasticsearch - Elasticsearch-如何在升级后删除卡住的持久设置

logging - 将 Sentry 日志记录与Elasticsearch结合使用