Hướng dẫn how do you save data in python? - làm thế nào để bạn lưu dữ liệu trong python?

Xin chào người đọc! Trong hướng dẫn này, chúng tôi sẽ xử lý cách chúng tôi có thể lưu dữ liệu một cách hiệu quả trong Python.

Khi chúng tôi làm việc trên các ứng dụng Python, chúng tôi sẽ xử lý trực tiếp các đối tượng Python, vì mọi thứ đều là một đối tượng trong Python. Hãy cùng nhìn vào một số cách mà chúng ta có thể lưu trữ chúng một cách dễ dàng!

1. Sử dụng dưa chua để lưu trữ các đối tượng Python

Nếu chúng ta muốn giữ mọi thứ đơn giản, chúng ta có thể sử dụng mô -đun Pickle, đây là một phần của thư viện tiêu chuẩn để lưu dữ liệu trong Python.

Chúng ta có thể sử dụng các đối tượng python Pickle Pickle vào một tệp Pickle, mà chúng ta có thể sử dụng để lưu/tải dữ liệu.

Vì vậy, nếu bạn có một đối tượng tùy chỉnh mà bạn có thể cần lưu trữ / truy xuất, bạn có thể sử dụng định dạng này:

import pickle

class MyClass():
    def __init__(self, param):
        self.param = param

def save_object(obj):
    try:
        with open("data.pickle", "wb") as f:
            pickle.dump(obj, f, protocol=pickle.HIGHEST_PROTOCOL)
    except Exception as ex:
        print("Error during pickling object (Possibly unsupported):", ex)

obj = MyClass(10)
save_object(obj)

Nếu bạn chạy tập lệnh này, bạn sẽ nhận thấy một tệp có tên data.pickle, chứa dữ liệu đã lưu.

Để tải lại cùng một đối tượng, chúng ta có thể sử dụng pickle.load() bằng logic tương tự.

import pickle

class MyClass():
    def __init__(self, param):
        self.param = param

def load_object(filename):
    try:
        with open(filename, "rb") as f:
            return pickle.load(f)
    except Exception as ex:
        print("Error during unpickling object (Possibly unsupported):", ex)

obj = load_object("data.pickle")

print(obj.param)
print(isinstance(obj, MyClass))

Đầu ra

Chúng tôi chỉ cần lấy dữ liệu cũ của chúng tôi thành công!

2. Sử dụng SQLite3 để lưu dữ liệu trong Python liên tục

Nếu bạn muốn sử dụng cơ sở dữ liệu liên tục để lưu dữ liệu trong Python, bạn có thể sử dụng thư viện sqlite3 cung cấp cho bạn API để sử dụng cơ sở dữ liệu SQLite.

Một lần nữa, đây là một phần của thư viện tiêu chuẩn, vì vậy, không cần phải cài đặt bất cứ thứ gì!

Tuy nhiên, vì đây là cơ sở dữ liệu quan hệ, bạn có thể trực tiếp đổ các đối tượng Python như trong ____10.

Bạn phải tuần tự hóa và hủy bỏ chúng vào các loại cơ sở dữ liệu thích hợp của chúng.

Để xem xét một số ví dụ, bạn có thể tham khảo bài viết này về việc sử dụng SQLite trong Python.

3. Sử dụng sqlitedict làm bộ nhớ cache liên tục

Nếu bạn thấy sử dụng sqlite3 quá tẻ nhạt, thì có một giải pháp tốt hơn nhiều! Bạn có thể sử dụng

import pickle

class MyClass():
    def __init__(self, param):
        self.param = param

def load_object(filename):
    try:
        with open(filename, "rb") as f:
            return pickle.load(f)
    except Exception as ex:
        print("Error during unpickling object (Possibly unsupported):", ex)

obj = load_object("data.pickle")

print(obj.param)
print(isinstance(obj, MyClass))
2 để lưu trữ dữ liệu liên tục và điều này sử dụng cơ sở dữ liệu sqlite3 để xử lý việc lưu trữ.

Bạn phải cài đặt gói này bằng PIP:

Điều duy nhất bạn cần ghi nhớ là bạn cần sử dụng ánh xạ

import pickle

class MyClass():
    def __init__(self, param):
        self.param = param

def load_object(filename):
    try:
        with open(filename, "rb") as f:
            return pickle.load(f)
    except Exception as ex:
        print("Error during unpickling object (Possibly unsupported):", ex)

obj = load_object("data.pickle")

print(obj.param)
print(isinstance(obj, MyClass))
4 để lưu trữ / truy xuất dữ liệu, giống như một từ điển!

Dưới đây, một ví dụ rất đơn giản sử dụng thể hiện

import pickle

class MyClass():
    def __init__(self, param):
        self.param = param

def load_object(filename):
    try:
        with open(filename, "rb") as f:
            return pickle.load(f)
    except Exception as ex:
        print("Error during unpickling object (Possibly unsupported):", ex)

obj = load_object("data.pickle")

print(obj.param)
print(isinstance(obj, MyClass))
5.

from sqlitedict import SqliteDict

class MyClass():
    def __init__(self, param):
        self.param = param

def save(key, value, cache_file="cache.sqlite3"):
    try:
        with SqliteDict(cache_file) as mydict:
            mydict[key] = value # Using dict[key] to store
            mydict.commit() # Need to commit() to actually flush the data
    except Exception as ex:
        print("Error during storing data (Possibly unsupported):", ex)

def load(key, cache_file="cache.sqlite3"):
    try:
        with SqliteDict(cache_file) as mydict:
            value = mydict[key] # No need to use commit(), since we are only loading data!
        return value
    except Exception as ex:
        print("Error during loading data:", ex)

obj1 = MyClass(10)
save("MyClass_key", obj1)

obj2 = load("MyClass_key")

print(obj1.param, obj2.param)
print(isinstance(obj1, MyClass), isinstance(obj2, MyClass))

Đầu ra

Chúng tôi chỉ cần lấy dữ liệu cũ của chúng tôi thành công!


2. Sử dụng SQLite3 để lưu dữ liệu trong Python liên tục

Nếu bạn muốn sử dụng cơ sở dữ liệu liên tục để lưu dữ liệu trong Python, bạn có thể sử dụng thư viện sqlite3 cung cấp cho bạn API để sử dụng cơ sở dữ liệu SQLite.


Dưới đây là một ví dụ về bộ mã hóa cho đến khi bạn có thể muốn viết cho lớp

import pickle

class MyClass():
    def __init__(self, param):
        self.param = param

def load_object(filename):
    try:
        with open(filename, "rb") as f:
            return pickle.load(f)
    except Exception as ex:
        print("Error during unpickling object (Possibly unsupported):", ex)

obj = load_object("data.pickle")

print(obj.param)
print(isinstance(obj, MyClass))
8:

# add this to your code
class BodyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        if hasattr(obj, '__jsonencode__'):
            return obj.__jsonencode__()
        if isinstance(obj, set):
            return list(obj)
        return obj.__dict__

    # Here you construct your way to dump your data for each instance
    # you need to customize this function
    def deserialize(data):
        bodies = [Body(d["name"],d["mass"],np.array(d["p"]),np.array(d["v"])) for d in data["bodies"]]
        axis_range = data["axis_range"]
        timescale = data["timescale"]
        return bodies, axis_range, timescale

    # Here you construct your way to load your data for each instance
    # you need to customize this function
    def serialize(data):
        file = open(FILE_NAME, 'w+')
        json.dump(data, file, cls=BodyEncoder, indent=4)
        print("Dumping Parameters of the Latest Run")
        print(json.dumps(data, cls=BodyEncoder, indent=4))

Dưới đây là một ví dụ về lớp tôi muốn tuần tự hóa:

class Body(object):
    # you do not need to change your class structure
    def __init__(self, name, mass, p, v=(0.0, 0.0, 0.0)):
        # init variables like normal
        self.name = name
        self.mass = mass
        self.p = p
        self.v = v
        self.f = np.array([0.0, 0.0, 0.0])

    def attraction(self, other):
        # not important functions that I wrote...

Đây là cách tuần tự hóa:

# you need to customize this function
def serialize_everything():
    bodies, axis_range, timescale = generate_data_to_serialize()

    data = {"bodies": bodies, "axis_range": axis_range, "timescale": timescale}
    BodyEncoder.serialize(data)

Đây là cách đổ:

def dump_everything():
    data = json.loads(open(FILE_NAME, "r").read())
    return BodyEncoder.deserialize(data)

Chúng ta có thể lưu dữ liệu trong Python không?

Sử dụng đối tượng tệp tích hợp của Python, có thể ghi dữ liệu chuỗi vào tệp đĩa và đọc từ nó. Thư viện tiêu chuẩn của Python, cung cấp các mô -đun để lưu trữ và truy xuất dữ liệu được tuần tự hóa trong các cấu trúc dữ liệu khác nhau như JSON và XML.. Python's standard library, provides modules to store and retrieve serialized data in various data structures such as JSON and XML.

Cách tốt nhất để lưu trữ dữ liệu trong Python là gì?

Chúng tôi sẽ xem xét các định dạng sau để lưu trữ dữ liệu của chúng tôi ...
CSV văn bản đơn giản-Một người bạn cũ của một nhà khoa học dữ liệu ..
Pickle - Cách của Python để tuần tự hóa mọi thứ ..
MessagePack - nó giống như JSON nhưng nhanh và nhỏ ..
Định dạng tệp HDF5, được thiết kế để lưu trữ và sắp xếp một lượng lớn dữ liệu ..

Làm thế nào để Python lưu trữ dữ liệu vào một tệp?

Lưu tệp văn bản trong Python Mở tệp mới trong chế độ ghi sẽ tạo một tệp và sau khi đóng tệp, các tệp được lưu tự động.Tuy nhiên, chúng tôi cũng có thể viết một số văn bản vào tệp.Python cung cấp hai phương pháp cho cùng một.Write (): Chèn chuỗi str1 trong một dòng trong tệp văn bản.Opening a new file in write mode will create a file and after closing the file, the files get saved automatically. However, we can also write some text to the file. Python provides two methods for the same. write(): Inserts the string str1 in a single line in the text file.

Save () trong Python là gì?

Lưu () hàm.Hàm Save () được sử dụng để lưu một mảng vào tệp nhị phân ở định dạng .npy numpy.used to save an array to a binary file in NumPy . npy format.