Hướng dẫn python file lock example - ví dụ khóa tập tin python
Tệp khóa Python với các ví dụ mã Show
Nội dung chính ShowShow
Chúng tôi sẽ sử dụng lập trình trong bài học này để cố gắng giải câu đố tập tin khóa Python. Điều này được thể hiện bằng mã sau. from filelock import FileLock with FileLock("myfile.txt.lock"): print("Lock acquired.") with open("myfile.txt"): # work with the file as it is now locked Dưới đây là danh sách các phương pháp khác nhau có thể được thực hiện để giải quyết vấn đề tệp khóa Python. import os import time import errno class FileLockException(Exception): pass class FileLock(object): """ A file locking mechanism that has context-manager support so you can use it in a with statement. This should be relatively cross compatible as it doesn't rely on msvcrt or fcntl for the locking. """ def __init__(self, file_name, timeout=10, delay=.05): """ Prepare the file locker. Specify the file to lock and optionally the maximum timeout and the delay between each attempt to lock. """ if timeout is not None and delay is None: raise ValueError("If timeout is not None, then delay must not be None.") self.is_locked = False self.lockfile = os.path.join(os.getcwd(), "%s.lock" % file_name) self.file_name = file_name self.timeout = timeout self.delay = delay def acquire(self): """ Acquire the lock, if possible. If the lock is in use, it check again every `wait` seconds. It does this until it either gets the lock or exceeds `timeout` number of seconds, in which case it throws an exception. """ start_time = time.time() while True: try: self.fd = os.open(self.lockfile, os.O_CREAT|os.O_EXCL|os.O_RDWR) self.is_locked = True #moved to ensure tag only when locked break; except OSError as e: if e.errno != errno.EEXIST: raise if self.timeout is None: raise FileLockException("Could not acquire lock on {}".format(self.file_name)) if (time.time() - start_time) >= self.timeout: raise FileLockException("Timeout occured.") time.sleep(self.delay) # self.is_locked = True def release(self): """ Get rid of the lock by deleting the lockfile. When working in a `with` statement, this gets automatically called at the end. """ if self.is_locked: os.close(self.fd) os.unlink(self.lockfile) self.is_locked = False def __enter__(self): """ Activated when used in the with statement. Should automatically acquire a lock to be used in the with block. """ if not self.is_locked: self.acquire() return self def __exit__(self, type, value, traceback): """ Activated at the end of the with statement. It automatically releases the lock if it isn't locked. """ if self.is_locked: self.release() def __del__(self): """ Make sure that the FileLock instance doesn't leave a lockfile lying around. """ self.release() import lockfile with lockfile.LockFile('/tmp/example.lock'): print('Locked') print('Unlocked') Chúng tôi đã có thể khắc phục sự cố tệp khóa Python bằng cách xem xét một số ví dụ khác nhau. Làm thế nào để bạn khóa một tập tin trong Python?Làm cách nào để khóa một thư mục trong Python? Làm cách nào để khóa một thư mục trong Python?Lockfile cho Python là gì? Lockfile cho Python là gì?Khóa tệp NFS là gì? Khóa tệp NFS là gì?Làm thế nào để bạn sử dụng mutex trong python? Làm thế nào để bạn sử dụng mutex trong python?Làm cách nào để sử dụng filelock? Làm cách nào để sử dụng filelock?Làm cách nào để khóa một tệp trong pycharm?
Làm cách nào để khóa một tệp trong pycharm?Pip có một tệp khóa không? Pip có một tệp khóa không?Làm thế nào để một lockfile hoạt động? Làm thế nào để một lockfile hoạt động?Làm cách nào để khóa pipfile của tôi? Làm cách nào để khóa pipfile của tôi?Chúng tôi sẽ sử dụng lập trình trong bài học này để cố gắng giải câu đố tập tin khóa Python. Điều này được thể hiện bằng mã sau.
|