Để cập nhật một đối tượng JSON trong một tệp, hãy nhập thư viện json
, đọc tệp bằng json.load[file
], thêm mục nhập mới vào danh sách hoặc cấu trúc dữ liệu từ điển data
và viết đối tượng JSON được cập nhật bằng json.dump[data, file]
Cụ thể, đây là bốn bước cụ thể để cập nhật tệp JSON hiện có bằng một mục nhập mới
- Nhập thư viện
json
vớiimport json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]
0 - Đọc tệp JSON trong cấu trúc dữ liệu bằng cách sử dụng
import json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]
1 sau khi mở tệp bằngimport json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]
2 ở chế độ đọcimport json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]
3. Tại thời điểm này, bạn có dữ liệu JSON trong mã Python của mình dưới dạng từ điển hoặc danh sách [tùy thuộc vào cách dữ liệu của bạn trông như thế nào—xem bảng chuyển đổi bên dưới] - Cập nhật cấu trúc dữ liệu Python với mục nhập mới [e. g. , một từ điển mới để thêm vào danh sách]
- Viết JSON đã cập nhật
data
trở lại tệp JSON bằng cách sử dụngjson.dump[data, file]
sau khi mở tệp ở chế độ ghi bằng cách sử dụngimport json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]
6
import json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]
Trên thực tế, khi sử dụng phương thức
import json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]7, đối tượng Python trả về được chuyển đổi từ định dạng JSON bằng cách sử dụngJSONPythonobjectdictarrayliststringstrnumber [int]intnumber [real]floattrueTruefalseFalsenullNone
Để hiểu rõ hơn về các cấu trúc dữ liệu quan trọng nhất, chẳng hạn như từ điển Python, bạn có thể muốn xem Học viện Khoa học Máy tính Finxter
Hướng dẫn cơ bản về từ điển trong Python
Khóa học miễn phí cho tất cả các thành viên cao cấp của Finxter
Phương pháp 2. Chỉ mở tệp một lần bằng cách đặt lại con trỏ tệp
Thay vì mở đối tượng tệp hai lần, bạn chỉ có thể mở nó một lần và đặt lại con trỏ tệp bằng cách sử dụng
import json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]8 để ghi đè lên nội dung tệp hiện có bằng bốn bước sau
- Sử dụng
import json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]
9 để tạo một đối tượngimport json filename = 'your_file.json' # Old JSON File: # [{"alice": 24, "bob": 27}] entry = {'carl': 33} with open[filename, "r+"] as file: data = json.load[file] data.append[entry] file.seek[0] json.dump[data, file] # New JSON file: # [{"alice": 24, "bob": 27}, {"carl": 33}]
0 ở chế độ đọc và viếtimport json filename = 'your_file.json' # Old JSON File: # [{"alice": 24, "bob": 27}] entry = {'carl': 33} with open[filename, "r+"] as file: data = json.load[file] data.append[entry] file.seek[0] json.dump[data, file] # New JSON file: # [{"alice": 24, "bob": 27}, {"carl": 33}]
1 - Gọi
import json filename = 'your_file.json' # Old JSON File: # [{"alice": 24, "bob": 27}] entry = {'carl': 33} with open[filename, "r+"] as file: data = json.load[file] data.append[entry] file.seek[0] json.dump[data, file] # New JSON file: # [{"alice": 24, "bob": 27}, {"carl": 33}]
2 để tải dữ liệu từ tệp trong mã Python của bạn. Bây giờ, bạn có thể cập nhật dữ liệu trong mã Python của mình. Ví dụ: nếu tệp JSON của bạn được cấu trúc dưới dạng danh sách từ điển, chỉ cần nối thêm một từ điển mới - Sử dụng
import json filename = 'your_file.json' entry = {'carl': 33} # 1. Read file contents with open[filename, "r"] as file: data = json.load[file] # 2. Update json object data.append[entry] # 3. Write json file with open[filename, "w"] as file: json.dump[data, file]
8 để đặt lại con trỏ tệp về vị trí 0, vì vậy bạn có thể ghi đè lên nó thay vì nối lại toàn bộ đối tượng JSON - Gọi
json.dump[data, file]
để ghi đè lênimport json filename = 'your_file.json' # Old JSON File: # [{"alice": 24, "bob": 27}] entry = {'carl': 33} with open[filename, "r+"] as file: data = json.load[file] data.append[entry] file.seek[0] json.dump[data, file] # New JSON file: # [{"alice": 24, "bob": 27}, {"carl": 33}]
0 bằngdata
Đây là mã cụ thể
import json filename = 'your_file.json' # Old JSON File: # [{"alice": 24, "bob": 27}] entry = {'carl': 33} with open[filename, "r+"] as file: data = json.load[file] data.append[entry] file.seek[0] json.dump[data, file] # New JSON file: # [{"alice": 24, "bob": 27}, {"carl": 33}]
Phương pháp 3. Tạo một tệp JSON ban đầu và cập nhật nó sau đó
Nếu bạn chưa có tệp JSON, trước tiên bạn có thể tạo tệp từ danh sách ban đầu như sau
import json filename = 'your_file.json' lst = [{'alice': 24, 'bob': 27}] # Write the initial json object [list of dicts] with open[filename, mode='w'] as f: json.dump[lst, f] # Append the new dict to the list and overwrite whole file with open[filename, mode='w'] as f: lst.append[{'carl':33}] json.dump[lst, f]
Tóm tắt và Thảo luận
Cả ba phương pháp được trình bày trong bài viết này về cơ bản đều sử dụng cùng một ý tưởng. gọi
import json filename = 'your_file.json' # Old JSON File: # [{"alice": 24, "bob": 27}] entry = {'carl': 33} with open[filename, "r+"] as file: data = json.load[file] data.append[entry] file.seek[0] json.dump[data, file] # New JSON file: # [{"alice": 24, "bob": 27}, {"carl": 33}]7] để cập nhật tệp có một số dữ liệu. Biến dữ liệu có thể chứa tất cả các định dạng JSON khác nhau, chẳng hạn như danh sách từ điển hoặc từ điển
Nếu trước tiên bạn cần tải dữ liệu từ tệp, hãy sử dụng
import json filename = 'your_file.json' # Old JSON File: # [{"alice": 24, "bob": 27}] entry = {'carl': 33} with open[filename, "r+"] as file: data = json.load[file] data.append[entry] file.seek[0] json.dump[data, file] # New JSON file: # [{"alice": 24, "bob": 27}, {"carl": 33}]2 trên đối tượng tệp được mở ở chế độ đọc
Nói chung, việc thêm dữ liệu vào tệp JSON không phải là một ý tưởng hay vì đối với mỗi bản cập nhật nhỏ, bạn phải đọc và phân tích toàn bộ đối tượng tệp. Nếu tệp JSON của bạn có n mục, thì độ phức tạp thời gian chạy của việc cập nhật nó là O[n]
Cách tiếp cận tốt hơn là lưu trữ dữ liệu dưới dạng tệp CSV có thể được đọc từng dòng để đơn giản hóa việc phân tích cú pháp và cập nhật đáng kể bằng cách chỉ thêm một dòng vào tệp có độ phức tạp thời gian chạy không đổi
Cảm ơn bạn đã nghiên cứu bài viết này, vui lòng xem khóa học cheat sheet Python miễn phí của tôi để luôn nhạy bén và cải thiện kỹ năng Python của bạn liên tục, từng ngày. 🙂
Bạn có thể đăng ký miễn phí tại đây
lập trình viên
Chris
Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính
Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới
Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây