Có thể lưu dữ liệu vào đĩa và truy xuất nó tương đương với việc có thể chuyển đổi dữ liệu này thành chuỗi và sau đó trở lại dữ liệu. Thật vậy, bạn luôn có thể định nghĩa
def save[data, filename]:
with open[filename, 'w'] as fh:
fh.write[string_from_data[data]]
def retrieve[filename]:
with open[filename] as fh:
return data_from_string[fh.read[]]
Điều đó có nghĩa là bạn chỉ cần xác định
def string_from_data[data]:
return '\n'.join[data]
def data_from_string[s]:
return s.split['\n']
7 và def string_from_data[data]:
return '\n'.join[data]
def data_from_string[s]:
return s.split['\n']
8. Điều này được gọi là tuần tự hóa và hủy tuần tự hóa dữ liệu. Có rất nhiều cách để làm điều đóVí dụ: giả sử rằng dữ liệu của bạn là một danh sách các tên và các tên đó không chứa ký tự xuống dòng, người ta có thể định nghĩa
def string_from_data[data]:
return '\n'.join[data]
def data_from_string[s]:
return s.split['\n']
Bây giờ với những định nghĩa này, bạn có thể viết trong chương trình
import os
FILENAME = 'mylist.txt'
if os.path.isfile[FILENAME]:
mylist = retrieve[FILENAME]
else:
mylist = []
# .. work with mylist
save[mylist, FILENAME]
0 0
Đăng lại
vegaseat 1.735 Kẻ đạo đức giả của DaniWeb Đồng nghiệp trong nhóm
7 năm trướcDưa chua mô-đun được thực hiện cho việc này
''' pickle_list101.py
use module pickle to dump and load a list object
use binary file modes "wb" and "rb" to make it work with
Python2 and Python3
'''
import pickle
mylist = [
'Frank',
'Paul',
'Mary']
fname = "list101.pkl"
# pickle dump the list object
with open[fname, "wb"] as fout:
# default protocol is zero
# -1 gives highest prototcol and smallest data file size
pickle.dump[mylist, fout, protocol=-1]
# pickle load the list object back in [senses protocol]
with open[fname, "rb"] as fin:
mylist2 = pickle.load[fin]
# visual compare
print[mylist]
print['-'*30]
print[mylist2]
''' result ...
['Frank', 'Paul', 'Mary']
------------------------------
['Frank', 'Paul', 'Mary']
'''
0 0
Đăng lại
Niloofar24 15 Đăng Whiz
7 năm trướcChà, tôi nên lưu những mã này ở đâu? . văn bản?
0 0
Đăng lại
vegaseat 1.735 Kẻ đạo đức giả của DaniWeb Đồng nghiệp trong nhóm
7 năm trướcBạn có thể lưu trữ nó trong bất kỳ thư mục nào bạn muốn, miễn là bạn cung cấp cho nó tên đường dẫn đầy đủ. Để thuận tiện, tôi sẽ giữ mã. py và tệp dữ liệu trong một thư mục
0 0
Đăng lại
snippsat 661 Áp phích chính
7 năm trướcMột thử nghiệm với tập dữ liệu, cơ sở dữ liệu đơn giản nhất có thể.
Vì vậy, ở đây tôi có một danh sách người chơi mà tôi lưu trữ trong cơ sở dữ liệu Sqlite [đi kèm với Python].
import dataset
player_lst = [
{'name': 'Tom', 'score': 250},
{'name': 'Kent', 'score': 150},
{'name': 'Paul', 'score': 500}
]
db = dataset.connect['sqlite:///mydatabase.db']
table = db['Score_table']
for item in player_lst:
table.insert[item]
Kiểm tra nó, bằng cách lấy ra một số dữ liệu
>>> users = db['Score_table'].all[]
>>> for user in db['Score_table']:
.. print user
..
OrderedDict[[[u'id', 1], [u'score', 250], [u'name', u'Tom']]]
OrderedDict[[[u'id', 2], [u'score', 150], [u'name', u'Kent']]]
OrderedDict[[[u'id', 3], [u'score', 500], [u'name', u'Paul']]]
>>> table.find_one[name='Tom']
OrderedDict[[[u'id', 1], [u'score', 250], [u'name', u'Tom']]]
>>> table.find_one[name='Tom']['score']
250
Nó cũng có tất cả sức mạnh của các truy vấn SQL nếu cần
________số 81 0
Đăng lại
Đã chỉnh sửa 7 năm trước bởi snippsat
Gribouillis đã nhận xét. liên kết thú vị +14
Gribouillis 1.391 Trình thám hiểm lập trình Đồng nghiệp nhóm
7 năm trước@snippsat Tôi thích khái niệm này, mặc dù dựa trên sqlalchemy có thể có chi phí hiệu năng cho tập dữ liệu
Điều tuyệt vời nhất trong điều này có thể là lệnh datafreeze mà nó chứa và khái niệm về tệp đóng băng yaml giúp mô tả việc trích xuất dữ liệu có thể sử dụng lại từ một cơ sở dữ liệu nhất định
Với một chút công việc nữa, các tệp đóng băng có thể được sử dụng để xuất các tệp dưa chua> thay vì json hoặc csv, khiến chúng trở nên đơn giản để tải từ python