Khóa tệp Python

FileLock được sử dụng để chỉ ra một quy trình khác trong ứng dụng của bạn rằng tài nguyên hoặc thư mục làm việc hiện đang được sử dụng. Để làm như vậy, trước tiên hãy tạo FileLock

from filelock import Timeout, FileLock

file_path = "high_ground.txt"
lock_path = "high_ground.txt.lock"

lock = FileLock[lock_path, timeout=1]

Đối tượng khóa hỗ trợ nhiều cách để lấy khóa, bao gồm cả những cách được sử dụng để lấy khóa chuỗi Python tiêu chuẩn

with lock:
    with open[file_path, "a"] as f:
        f.write["Hello there!"]

lock.acquire[]
try:
    with open[file_path, "a"] as f:
        f.write["General Kenobi!"]
finally:
    lock.release[]


@lock
def decorated[]:
    print["You're a decorated Jedi!"]


decorated[]

Phương thức thu được cũng chấp nhận một tham số hết thời gian chờ. Nếu khóa không thể lấy được trong vài giây hết thời gian chờ, một ngoại lệ Hết thời gian chờ sẽ được nâng lên

try:
    with lock.acquire[timeout=10]:
        with open[file_path, "a"] as f:
            f.write["I have a bad feeling about this."]
except Timeout:
    print["Another instance of this application currently holds the lock."]

Các đối tượng khóa là các khóa đệ quy, có nghĩa là sau khi có được, chúng sẽ không chặn các yêu cầu khóa liên tiếp

Đôi khi, bạn có thể cần khóa một tệp hoặc thư mục khỏi ứng dụng hoặc dịch vụ python của mình để ngăn người khác sửa đổi nó. Điều này được yêu cầu đặc biệt nếu nhiều quy trình đang truy cập cùng một tệp. Nói chung, khóa tệp được triển khai bằng các công cụ hệ điều hành trong Linux và Windows. Nhưng đôi khi bạn có thể cần thực thi khóa tệp từ bên trong python. Trong bài viết này, chúng ta sẽ tìm hiểu cách khóa tệp trong python. Bạn có thể sử dụng các bước này trên tất cả các phiên bản Python, từ bên trong các ứng dụng, tập lệnh, dịch vụ dựa trên python của bạn và thậm chí cả các trang web


Cách khóa tệp trong Python

Có một số thư viện có sẵn để khóa tệp. Chúng tôi sẽ sử dụng Portalocker cho mục đích của chúng tôi. Portalocker cung cấp một API dễ dàng để khóa tệp trong python. Nó thậm chí còn hỗ trợ khóa Redis

Đây là lệnh để cài đặt Portalocker

pip install portalocker

Nếu bạn sử dụng Python

Chủ Đề