python - পাইথন অভিধান সংরক্ষণ করা হচ্ছে



json dictionary (6)

আপনি serialization পরে থাকেন তবে অন্যান্য প্রোগ্রামের তথ্য প্রয়োজন হবে না আমি দৃঢ়ভাবে shelve মডিউল সুপারিশ। একটি অবিচলিত অভিধান হিসাবে এটি চিন্তা করুন।

myData = shelve.open('/path/to/file')

# check for values.
keyVar in myData

# set values
myData[anotherKey] = someValue

# save the data for future use.
myData.close()

আমি .csv ফাইলগুলি ব্যবহার করে পাইথন এর মধ্যে এবং বাইরে তথ্য আনতে ব্যবহার করছি, তবে এতে সুস্পষ্ট চ্যালেঞ্জ রয়েছে। একটি জসন বা প্যাক ফাইলে একটি অভিধান (অথবা অভিধানের সেট) সংরক্ষণ করার সহজ উপায়গুলির কোন পরামর্শ? উদাহরণ স্বরূপ:

data = {}
data ['key1'] = "keyinfo"
data ['key2'] = "keyinfo2"

আমি কিভাবে এটি সংরক্ষণ করতে হবে, এবং তারপরে এটি কিভাবে লোড করতে হবে তা জানতে চাই।


Answer #1

আপনি যদি pickle বা json বিকল্প চান, আপনি klepto ব্যবহার করতে পারেন।

>>> init = {'y': 2, 'x': 1, 'z': 3}
>>> import klepto
>>> cache = klepto.archives.file_archive('memo', init, serialized=False)
>>> cache        
{'y': 2, 'x': 1, 'z': 3}
>>>
>>> # dump dictionary to the file 'memo.py'
>>> cache.dump() 
>>> 
>>> # import from 'memo.py'
>>> from memo import memo
>>> print memo
{'y': 2, 'x': 1, 'z': 3}

klepto , যদি আপনি serialized=True ব্যবহার করেন, তবে স্পষ্ট পাঠ্যের পরিবর্তে memo.pkl একটি memo.pkl অভিধান হিসাবে লেখা হয়েছে।

আপনি এখানে klepto পেতে পারেন: https://github.com/uqfoundation/klepto

dill সম্ভবত dill জন্য নিজেকে বেছে dill জন্য একটি ভাল পছন্দ, কারণ dill পাইথনটিতে প্রায় কিছু ক্রমিক করতে পারে। klepto এছাড়াও dill ব্যবহার করতে পারেন।

আপনি এখানে dill পেতে পারেন: https://github.com/uqfoundation/dill

প্রথম কয়েকটি লাইনের অতিরিক্ত মুম্বো-জাম্বো klepto একটি ফাইলে, কোনও ডিরেক্টরি প্রেক্ষাপটে বা SQL ডেটাবেসে সংরক্ষণ করতে কনফিগার করা যেতে পারে। আপনি যা ব্যাকএন্ড আর্কাইভ হিসাবে চয়ন করেন তার জন্য API একই। এটি আপনাকে একটি "সংরক্ষণযোগ্য" অভিধান দেয় যার সাহায্যে আপনি সংরক্ষণাগারের সাথে যোগাযোগ করতে load এবং dump ব্যবহার করতে পারেন।


Answer #2

একটি ফাইল লিখতে:

import json
myfile.write(json.dumps(mydict))

একটি ফাইল থেকে পড়তে:

import json
mydict = json.loads(myfile.read())

myfile ফাইলের বস্তুটি যে ফাইলটি আপনি সংরক্ষণ করেছেন সেটির জন্য।


Answer #3

এছাড়াও ইউজসন দ্রুত গতির প্যাকেজ দেখুন। https://pypi.python.org/pypi/ujson

import ujson
with open('data.json', 'wb') as fp:
    ujson.dump(data, fp)

Answer #4

নূন্যতম উদাহরণ, একটি ফাইল সরাসরি লিখুন:

import json
json.dump(data, open(filename, 'wb'))
data = json.load(open(filename))

বা নিরাপদে খোলা / বন্ধ:

import json
with open(filename, 'wb') as outfile:
    json.dump(data, outfile)
with open(filename) as infile:
    data = json.load(infile)

যদি আপনি একটি ফাইলের পরিবর্তে এটি একটি স্ট্রিং এ সংরক্ষণ করতে চান:

import json
json_str = json.dumps(data)
data = json.loads(json_str)

Answer #5

pickle সংরক্ষণ করুন:

try:
    import cPickle as pickle
except ImportError:  # python 3.x
    import pickle

with open('data.p', 'wb') as fp:
    pickle.dump(data, fp, protocol=pickle.HIGHEST_PROTOCOL)

protocol আর্গুমেন্ট সম্পর্কিত অতিরিক্ত তথ্যের জন্য আঠালো মডিউল ডকুমেন্টেশন দেখুন।

pickle লোড:

with open('data.p', 'rb') as fp:
    data = pickle.load(fp)

json সংরক্ষণ করুন:

import json

with open('data.json', 'w') as fp:
    json.dump(data, fp)

একটি চমত্কার ফলাফল পেতে sort_keys বা indent মত অতিরিক্ত আর্গুমেন্ট সরবরাহ করুন। আর্গুমেন্ট sort_keys অক্ষর অনুসারে সাজান এবং ইন্ডেন্ট indent=N স্পেস সঙ্গে আপনার তথ্য গঠন ইন্ডেন্ট হবে।

json.dump(data, fp, sort_keys=True, indent=4)

json লোড:

with open('data.json', 'r') as fp:
    data = json.load(fp)




pickle