шифровать файл JSON параллельно с Python - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть файл json, записи которого имеют вид

  "emp_no" : 10002,
    "birth_date" : "1964-06-02",
    "first_name" : "Bezalel",
    "last_name" : "Simmel",
    "gender" : "F",
    "hire_date" : "1985-11-21"

Теперь я хочу зашифровать emp_no с помощью OPE!Я хочу сделать это параллельно, поэтому я пытаюсь

from multiprocessing import Pool
from contextlib import closing
import json
from ope import OPE

r_k = OPE.generate_key()
cipher = OPE(r_k)
f = open('/home/carol/test.json', 'r')
data = json.load(f)

def ope_enc(x):
    x['emp_no'] = cipher.encrypt(x['emp_no'])
    return x

if __name__ == '__main__':
    data = my json file
    with closing(Pool(processes=5)) as pool:
        result = pool.map(ope_enc, data)
    h = open('/home/carol/res.json', 'w')

    json.dump(result, h)

, но это не работает!Может кто-нибудь мне помочь?!спасибо ...

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Код ниже (с использованием фиктивного шифрования)

from multiprocessing import Pool
from contextlib import closing
import json

data = [{"emp_no": 10002,
        "birth_date": "1964-06-02",
        "first_name": "Bezalel",
        "last_name": "Simmel",
        "gender": "F",
        "hire_date": "1985-11-21"}, {"emp_no": 100044,
                                     "birth_date": "1964-06-02",
                                     "first_name": "Bezalel",
                                     "last_name": "Simmel",
                                     "gender": "F",
                                     "hire_date": "1985-11-21"}]


def ope_enc(x):
    # Just add 1
    x['emp_no'] = x['emp_no'] + 1
    return x


if __name__ == '__main__':
    with closing(Pool(processes=5)) as pool:
        result = pool.map(ope_enc, data)
    with open('res.json', 'w') as out:
        json.dump(result, out)

res.json

 [
   {
     "emp_no": 10003,
     "birth_date": "1964-06-02",
     "first_name": "Bezalel",
     "last_name": "Simmel",
      "gender": "F",
      "hire_date": "1985-11-21"
  },
  {
      "emp_no": 100045,
      "birth_date": "1964-06-02",
      "first_name": "Bezalel",
      "last_name": "Simmel",
       "gender": "F",
       "hire_date": "1985-11-21"
  }
]
0 голосов
/ 20 февраля 2019

closing не следует использовать в этом случае, я думаю, вы имели в виду, что:

    with Pool(5) as pool:
        result = pool.map(ope_enc, data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...