Trong bài viết này, bạn sẽ tìm hiểu về Xử lý tệp – Các thao tác trên tệp nhị phân trong Python như Nối, Tìm kiếm, cập nhật và xóa
Trong bài viết trước, bạn đã tìm hiểu về Các thao tác cơ bản trên tệp nhị phân như mở/đóng tệp nhị phân, nguyên tắc cơ bản của mô-đun pickle và đọc và ghi trong tệp nhị phân
Vì vậy, hãy bắt đầu ngay bây giờ, nội dung như sau
chủ đề bao gồm
Nối dữ liệu trong tệp nhị phân
Để nối thêm dữ liệu ở dạng nhị phân, hãy làm theo các bước sau
- Mở tệp ở chế độ chắp thêm bằng “ab” Ví dụ. f = mở ["tệp. dat”,”ab”]
- Nhập dữ liệu để nối thêm
- Nối dữ liệu đã nhập vào đối tượng từ điển/danh sách
- sử dụng dưa chua. phương thức dump[] để ghi dữ liệu từ điển/danh sách
- Đóng tệp
Quan sát đoạn mã sau
def bf_append[]: f = open["sports.dat","ab"] print["Append Data"] pcode = int[input["Enter the Player code:"]] pname = input["Enter Player Name:"] score = int[input["Enter individual score:"]] rank = int[input["Enter Player Rank:"]] rec={'Pcode':pcode,'Pname':pname,'Score':score,'Rank':rank} pickle.dump[rec,f] f.close[] bf_append[]
Không chạy mã của bạn mà không đọc nội dung
Đọc dữ liệu
Làm theo các bước sau để đọc dữ liệu
- Mở tệp ở chế độ đọc bằng cách sử dụng “rb” Ex. f = open[“Tệp. dat”, “rb”]
- Sử dụng vòng lặp while với câu lệnh True để đọc toàn bộ nội dung của tệp
- Sử dụng thử – ngoại trừ Xử lý ngoại lệ để tránh EOFError trong thời gian chạy
- Bây giờ tải dữ liệu vào một đối tượng thông qua chức năng tải
- In dữ liệu theo nhu cầu
- Đóng tệp
Quan sát đoạn mã sau
def bf_read[]: f = open["Sports.dat","rb"] print["*"*78] print["Data stored in File...."] while True:
try: rec= pickle.load[f] print["Player Code:",rec['Pcode']] print["Player Name:",rec['Pname']] print["Individual Score:",rec['Score']] print["Player Rank:",rec['Rank']] print["."*78] except Exception:
break f.close[] bf_read[]
Xem video này để nối và hiển thị bản ghi bằng cách sử dụng đối tượng danh sách vào tệp nhị phân
Tìm kiếm bản ghi từ tệp nhị phân
Thực hiện theo các bước sau để tìm kiếm bản ghi trong tệp nhị phân
- Mở tệp ở chế độ đọc bằng cách sử dụng “rb”
- Nhắc một tin nhắn để hỏi trường duy nhất từ dữ liệu để tìm kiếm
- Khai báo cờ biến boolean để lưu trữ Sai khi không tìm thấy bản ghi và Đúng khi tìm thấy bản ghi
- Sử dụng vòng lặp while để truy cập từng bản ghi
- Bây giờ hãy tải dữ liệu vào đối tượng từ điển bằng hàm load[]
- Sử dụng điều kiện if để so sánh dữ liệu với biến được thực hiện ở bước 2
- In bản ghi được tìm thấy
- Gán True cho biến cờ được khai báo ở bước 3
- Sử dụng khối ngoại trừ để xử lý EOFError và kết thúc vòng lặp bằng dấu ngắt
- Thông báo không tìm thấy bản ghi in khi Cờ là Sai
- Cuối cùng, đóng tệp bằng f. gần[]
Quan sát đoạn mã sau
def bf_search[]: f = open["Sports.dat","rb"] pc = int[input["Player to code to search:"]] flag=False while True:
try: rec= pickle.load[f] if rec['Pcode']==pc: print["Player Name:",rec['Pname']] print["Individual Score:",rec['Score']] print["Rank:",rec['Rank']] flag = True except Exception: f.close[] if flag==False: print["Record not found..."] f.close[] bf_search[]
Cập nhật bản ghi trong tệp nhị phân
Để cập nhật bản ghi, bạn có thể sử dụng mã bản ghi tìm kiếm nếu muốn. Để cập nhật bản ghi, hãy làm theo các bước sau
- Mở tệp bằng chế độ đọc
- Khai báo một biến cho giá trị duy nhất được cập nhật
- Sử dụng vòng lặp try-ngoại trừ và vòng lặp như đã giải thích ở trên
- Thêm bản ghi được tìm nạp từ tệp nhị phân vào danh sách
- Nhập thông tin bản ghi mới để cập nhật
- So sánh các bản ghi đã tìm nạp với bản ghi đã nhập và gán các giá trị mới để cập nhật
- Ghi dữ liệu bằng hàm dump[]
- Đóng tệp
Hãy xem đoạn mã sau
def bf_update[]:
f = open['student.dat','rb']
reclst = []
while True:
try:
rec = pickle.load[f]
reclst.append[rec]
except EOFError:
break
f.close[]
pc=int[input["Enter player code to update:"]]
pn=input["Enter new name:"]
ps=int[input["Enter Player Score:"]]
pr=int[input["Enter Player Rank:"]]
for i in range [len[reclst]]:
if reclst[i]['Pcode']==pc:
reclst[i]['Pname'] = pn
reclst[i]['Score'] = ps
reclst[i]['Rank'] = pr
f = open['sports.dat','wb']
for i in reclst:
pickle.dump[i,f]
f.close[]
bf_update[]
Xóa bản ghi
Xóa một bản ghi là một chút khó khăn. Chỉ là chúng tôi đang ghi đè nội dung ngoại trừ bản ghi được yêu cầu xóa. Hãy xem xét các bước này
- Mở tệp ở chế độ đọc
- Tải dữ liệu bằng chức năng tải
- Đóng tập tin
- Nhắc thông báo xóa bản ghi có biến
- Mở tệp ở chế độ viết
- Khai báo một đối tượng danh sách để lưu trữ dữ liệu từ tệp
- Sử dụng vòng lặp for và điều kiện if như được sử dụng trong bản cập nhật
- Bây giờ trong điều kiện nếu viết tiếp tục nếu bản ghi được tìm thấy
- Ghi dữ liệu bằng phương thức kết xuất
- Đóng tệp
Quan sát mã này [Giả sử bao gồm mô-đun Pickle]
def bf_delete[]: f = open['sports.dat','rb']
reclst = []
while True:
try:
rec = pickle.load[f]
reclst.append[rec]
except EOFError:
break
f.close[]
pc=int[input["Enter Player code to delete record:"]]
f = open['sports.dat','wb']
for i in reclst:
if i['Pcode']==pc:
continue
pickle.dump[x,f]
f.close[] bf_delete[]
Tải xuống toàn bộ chương trình
Theo liên kết được cung cấp bên dưới để tải xuống chương trình hoàn chỉnh
Tải xuống Menu tệp nhị phân Chương trình tệp nhị phân được điều khiển
Cảm ơn bạn đã đọc bài viết này. Vui lòng hỏi bất kỳ nghi ngờ nào trong phần bình luận hoặc qua biểu mẫu liên hệ với chúng tôi