Xóa một bản ghi trong python

Xóa bản ghi khỏi tệp nhị phân trong Python

Xóa bản ghi khỏi tệp nhị phân trong Python . Các tệp nhị phân luôn được ghi ở dạng cấu trúc và sau đó nó được chuyển đổi thành luồng byte trước khi lưu trữ trong tệp nhị phân. Theo cấu trúc từ tôi muốn nói ở các định dạng như danh sách, bộ dữ liệu, bộ, từ điển, v.v.

Cách xóa bản ghi trong Tệp nhị phân . Không có chức năng được xác định trước trong python để xóa các bản ghi trong tệp nhị phân trong python. Chúng tôi sẽ xác định logic hoặc chức năng của mình để giải quyết vấn đề xóa bản ghi.

Xóa một bản ghi trong python

Quan trọng . Chúng tôi sẽ xóa bản ghi khỏi tệp hiện có của chúng tôi “ bin. dat ” đã có một số dữ liệu được ghi vào đó. Vì vậy, dưới đây là tệp thô của chúng tôi với dữ liệu.

tệp. “ thùng rác. dat

Xóa một bản ghi trong python

Chúng tôi sẽ cập nhật thông tin của học sinh có số báo danh ‘1602’

Phương pháp giải quyết vấn đề . Phương pháp giải quyết vấn đề sẽ là chúng ta sẽ sử dụng một “ temp” trống. dat ” để lưu trữ tất cả các bản ghi. Chúng tôi sẽ ghi tất cả các bản ghi có sẵn trong “ bin. dat ” trong “ temp. dat ” ngoại trừ bản ghi mà người dùng muốn xóa và sau đó chúng tôi sẽ đổi tên tệp “ temp. dat ” vào “ bin. dat ” và chúng tôi cũng sẽ xóa “ bin” cũ. dat ”. Do đó, theo cách này, chúng ta có thể xóa các bản ghi khỏi tệp nhị phân. Hãy cùng xem chương trình.

Chương trình . Xóa bản ghi khỏi tệp nhị phân trong Python.

Xóa một bản ghi trong python

Xem mã

import pickle
import os
 
# reading file before deletion
def read():
    file = open("bin.dat",'rb')
    data = pickle.load(file)
    print(data)

# deleting binary file
def delete():
    file = open("bin.dat",'rb')
    temp = open("temp.dat",'wb')
    rec = []
    rn = int(input("Enter roll number to delete: "))
    s = pickle.load(file)

    for i in s:
        if rn != i[0]:
            roll = i[0]
            name = i[1]
            age = i[2]
            data = [roll,name,age]
            rec.append(data)
        else:
            pass

    pickle.dump(rec,temp)
    file.close()
    temp.close()
    os.remove("bin.dat")
    os.rename("temp.dat", "bin.dat")

# reading file after deletion
def read2():
    file = open("bin.dat",'rb')
    data = pickle.load(file)
    print(data)

# calling all functions
read()
delete()
read2()


Giải thích
.
Giải pháp cho vấn đề của chúng tôi được chia thành bảy bước đơn giản. Ngoài ra, chúng tôi có thể thấy rằng chúng tôi đã xóa thành công bản ghi thứ ba trong tệp của mình. Dưới đây giải thích chương trình được đưa ra.

  • Bước 1 . Ở đây, chúng tôi đã xác định hàm read(), chỉ để kiểm tra các bản ghi có sẵn trong tệp nhị phân của chúng tôi. .
  • Bước A . Trong khối này, chúng tôi đã xác định định nghĩa phương thức xóa hoàn chỉnh của mình và chia toàn bộ quá trình thực hiện thành bốn phần phụ (2,3,4,5).
  • Bước 2 . Ở đây chúng ta đã mở “ bin. dat ” ở chế độ “rb” tức là. chế độ đọc. Ngoài ra, một tệp tạm thời có tên “ temp. dat ” trong “wb” tức là. ở chế độ ghi được mở.
  • Chúng tôi cũng đã khai báo một danh sách trống rec[] mà chúng tôi sẽ sử dụng sau này và cũng lưu trữ số cuộn từ đầu vào của người dùng trong biến “rn” mà anh ấy muốn xóa bản ghi. Chúng tôi cũng đang đọc tệp bằng cách sử dụng phương thức tải và lưu trữ tệp đó trong đối tượng tệp “s“
  • Bước 3 . Sau khi nhận được số cuộn đầu vào mà người dùng muốn xóa, ở bước 3, mỗi danh sách con được lặp lại và gán cho từng “i” một. Bây giờ nếu điều kiện, sẽ kiểm tra xem giá trị bên trong “rn” có khớp với giá trị có sẵn tại chỉ mục i[0] không?
  • Quan trọng .  Thực ra “i” đang lưu trữ danh sách phụ tức là. [1600,”Raj”,20]. vì vậy ở đây giá trị của i[0] là 1600. Do đó mỗi số cuộn được kiểm tra.
  • Vì vậy, nếu giá trị của “rn” khớp với một bản ghi bất kỳ thì luồng câu lệnh điều khiển thay vì nhập vào điều kiện if nó sẽ nhập vào điều kiện khác. phần và số cuộn mà người dùng muốn xóa sẽ bị bỏ qua/bỏ qua để thêm vào danh sách rec[]
    Phần còn lại tất cả các bản ghi nhập vào điều kiện if và nối vào danh sách rec[]
  • Bước 4 . Ở đây trong bước thứ tư, chúng tôi đang ghi tất cả dữ liệu vào “ temp. dat ” đã được thêm vào danh sách rec[] và chúng tôi cũng đã đóng “ temp. dat ” cũng như “ bin. dat ”.
  • Bước 5 . Ở đây chúng tôi đã sử dụng mô-đun os để đổi tên cũng như xóa tệp.
  • Bước 6 . Đây là phương thức read2() được xác định để đọc các bản ghi sau khi xóa bản ghi thành công.
  • Bước 7 . Ở đây chúng tôi đã gọi các hàm được xác định theo yêu cầu.

Do đó, theo cách này, chúng ta có thể xóa các bản ghi khỏi Tệp nhị phân

Hướng dẫn khác .

  • Hoàn thành danh sách phát xử lý tệp bằng Python
  • Cách xóa bản ghi bằng Python trong SQLite
  • Đọc dữ liệu từ tệp nhị phân trong Python
  • Cách nối dữ liệu vào tệp nhị phân trong Python
  • Cách cập nhật bản ghi trong tệp nhị phân trong Python
  • Viết nhiều dữ liệu vào một tệp nhị phân trong python

Làm cách nào để xóa tệp trong Python?

Có nhiều cách để Xóa tệp trong Python nhưng những cách tốt nhất là như sau. .
hệ điều hành. remove() xóa một tập tin
hệ điều hành. unlink() xóa một tập tin. nó là tên Unix của phương thức remove()
đóng cửa. rmtree() xóa một thư mục và tất cả nội dung của nó
đường dẫn. Đường dẫn

Lệnh nào được sử dụng để Xóa bản ghi?

Lệnh DELETE được sử dụng để xóa các bản ghi hiện có trong một bảng.