Page 167 - Em Học Python
P. 167

LƯU LẠI DỮ LIỆU BẰNG MODULE PICKLE



                       Module pickle dùng để chuyển đổi các đối tượng Python sang một
                               ​
                                      ​
               dạng gì đó có thể ghi lại thành file và rồi có thể dễ dàng đọc lại. Em sẽ
               thấy  pickle cực kỳ có tác dụng khi viết game và muốn ghi lại kết quả
                            ​
               hiện tại của người chơi. Ví dụ, ta có thể thêm chức năng lưu lại game như

               sau:


               >>> game_data = {
                   ​
                                                       ​
                                            ​
                    ​
                                         ​
                   'player-position' : 'N23 E45',
                                                                 ​
                                                              ​
                   'pockets' : ['keys', 'pocket knife', 'polished stone'],
                                    ​
                    ​
                               ​
                                           ​
                                             ​
                                                                                    ​
                                               ​
                    ​
                                ​
                                            ​
                                     ​
                                                           ​
                                                                   ​
                                                        ​
                   'backpack' : ['rope', 'hammer', 'apple'],
                    ​
                   'money' : 158.50
                             ​
               }
                       Ta vừa mới tạo ra một map trong Python có chứa vị trí hiện tại của người chơi trong
               game tưởng tượng, một danh sách các vật phẩm trong túi đồ, và số tiền người chơi đang có.
               Ta có thể lưu lại map này vào file bằng cách mở một file ra để ghi, rồi gọi hàm  dump của
                                                                                                    ​
               module pickle, như thế này:
                        ​
                               ​
                           ​
                   ​
               >>> import pickle
                    ​
                   ​
               >>> game_data = {
                                      ​
                 'player-position' : 'N23 E45',
                  ​
                                                     ​
                                          ​
                                                            ​
                                           ​
                                         ​
                                                                                 ​
                                                              ​
                                 ​
                             ​
                 'pockets' : ['keys', 'pocket knife', 'polished stone'],
                  ​
                                                        ​
                                          ​
                                                      ​
                  ​
                                            ​
                 'backpack' : ['rope', 'hammer', 'apple'],
                              ​
                                   ​
                                                                 ​
                 'money' : 158.50
                          ​
                  ​
               }
                                                     ​
               >>> save_file = open('save.dat', 'wb')
                                                            ​
                                                       ​
                                         ​
                   ​
                                   ​
                                       ​
                   ​
               >>> pickle.dump(game_data, save_file)
                   ​
               >>> save_file.close()
                       Ta mang module pickel vào ở ❶, rồi tạo ra map ở ❷. Ở ❸, ta mở file  save.dat   ​  ra với
                                         ​
                                                ​
               tham số  ’wb’, tức là  ghi file nhị phân  ⟨write binary⟩ (em sẽ cần lưu lại file này ở các thư
                             ​
                                                                    ​
                                                                        ​
               mục như  /Users/ malcolmozwald​    , /home/susanb/  ​  hay C:\\Users\JimmyIpswich​ , như ta
                                                   ​
               làm ở Chương 9.) Ở ❹, ta dùng hàm  dump rồi truyền map và biến file vào. Cuối cùng, ở ❺ ta
                                                         ​
               đóng file lại, vì đã xong việc rồi.
                                                                                                          ​
                                                                           Các module hay dùng trong Python          141
   162   163   164   165   166   167   168   169   170   171   172