Chào các anh chị em trong diễn đàn,
Dạo này công việc của mình hay phải xử lý các file Excel được cập nhật liên tục từ một hệ thống khác. Mỗi lần file thay đổi là lại phải chạy tay một loạt script Python để xử lý, khá là mất thời gian và dễ quên.
Mình tình cờ tìm hiểu và biết đến thư viện watchdog của Python. Thư viện này cho phép mình theo dõi sự thay đổi của một thư mục hoặc một file cụ thể. Khi có bất kỳ thay đổi nào (tạo mới, sửa đổi, xóa), watchdog sẽ kích hoạt một hàm mà mình đã định nghĩa sẵn.
Với watchdog, mình đã viết một script nhỏ để theo dõi thư mục chứa file Excel cần xử lý. Cứ mỗi khi file Excel trong thư mục đó được cập nhật, script sẽ tự động chạy các tác vụ xử lý dữ liệu và cập nhật lại file theo định dạng mong muốn. Điều này giúp mình tiết kiệm được kha khá thời gian và đảm bảo dữ liệu luôn được xử lý kịp thời.
Đây là một ví dụ đơn giản về cách sử dụng watchdog:
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import time
class ExcelChangeHandler(FileSystemEventHandler):
def on_modified(self, event):
if not event.is_directory and event.src_path.endswith('.xlsx'):
print(f'File {event.src_path} đã được sửa đổi. Bắt đầu xử lý...')
# Gọi hàm xử lý file Excel của bạn ở đây
process_excel_file(event.src_path)
def process_excel_file(filepath):
# Code xử lý file Excel bằng pandas, openpyxl, v.v.
print(f'Đã xử lý xong file: {filepath}')
if __name__ == "__main__":
path = "/path/to/your/excel/folder" # Thay thế bằng đường dẫn thư mục của bạn
event_handler = ExcelChangeHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Hy vọng chia sẻ này hữu ích cho anh chị em nào đang gặp tình huống tương tự. Có ai đã từng dùng watchdog hoặc có giải pháp nào khác để tự động hóa việc này không, cùng thảo luận nhé!