Đếm số bản ghi trong tệp nhị phân Python

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

  1. Mở tệp ở chế độ chắp thêm bằng “ab”  Ví dụ. f = mở ["tệp. dat”,”ab”]
  2. Nhập dữ liệu để nối thêm
  3. Nối dữ liệu đã nhập vào đối tượng từ điển/danh sách
  4. sử dụng dưa chua. phương thức dump[] để ghi dữ liệu từ điển/danh sách
  5. Đó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

  1. Mở tệp ở chế độ đọc bằng cách sử dụng “rb” Ex. f = open[“Tệp. dat”, “rb”]
  2. 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
  3. Sử dụng thử – ngoại trừ Xử lý ngoại lệ để tránh EOFError trong thời gian chạy
  4. Bây giờ tải dữ liệu vào một đối tượng thông qua chức năng tải
  5. In dữ liệu theo nhu cầu
  6. Đó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

    1. Mở tệp ở chế độ đọc bằng cách sử dụng “rb”
    2. Nhắc một tin nhắn để hỏi trường duy nhất từ ​​​​dữ liệu để tìm kiếm
    3. 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
    4. Sử dụng vòng lặp while để truy cập từng bản ghi
    5. Bây giờ hãy tải dữ liệu vào đối tượng từ điển bằng hàm load[]
    6. 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
    7. In bản ghi được tìm thấy
    8. Gán True cho biến cờ được khai báo ở bước 3
    9. 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
    10. Thông báo không tìm thấy bản ghi in khi Cờ là Sai
    11. 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

    1. Mở tệp bằng chế độ đọc
    2. Khai báo một biến cho giá trị duy nhất được cập nhật
    3. Sử dụng vòng lặp try-ngoại trừ và vòng lặp như đã giải thích ở trên
    4. Thêm bản ghi được tìm nạp từ tệp nhị phân vào danh sách
    5. Nhập thông tin bản ghi mới để cập nhật
    6. 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
    7. Ghi dữ liệu bằng hàm dump[]
    8. Đó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

    1. Mở tệp ở chế độ đọc
    2. Tải dữ liệu bằng chức năng tải
    3. Đóng tập tin
    4. Nhắc thông báo xóa bản ghi có biến
    5. Mở tệp ở chế độ viết
    6. Khai báo một đối tượng danh sách để lưu trữ dữ liệu từ tệp
    7. 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
    8. 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
    9. Ghi dữ liệu bằng phương thức kết xuất
    10. Đó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

Chủ Đề