2009-02-28 35 views
49

Tôi đang tìm gói theo dõi tệp python đa nền tảng? Tôi biết nó có thể theo dõi các tập tin trên windows bằng pywin32, và có những gói làm việc trên Linux/Unix nhưng không ai biết về một nền tảng đa nền tảng?Giám sát nội dung của tệp/thư mục?

+1

Tim Vàng có một phương pháp cross-platform rất đơn giản bỏ phiếu một thư mục với os.listdir tại đây: http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html – bernie

+2

"Màn hình" nghĩa là gì? Vui lòng cung cấp một số gợi ý về những gì bạn đang cố gắng làm. –

Trả lời

29

Đối với hệ thống dựa trên Unix/Linux, bạn nên sử dụng File Alteration Monitor Python bindings đến libfam.

Đối với hệ thống dựa trên Windows, bạn nên liên kết với API Win32 FindFirstChangeNotification và các chức năng liên quan.

Đối với một nền tảng chéo, tôi không biết về một nền tảng chéo tốt. Tôi nghĩ tốt nhất là nên tự xây dựng một mô-đun hoạt động trên cả hai hệ điều hành sử dụng một trong 2 phương pháp trên sau khi phát hiện ra hệ điều hành nào.

+1

Bạn có thể giải thích cách sử dụng API W32 trong một ví dụ ... bởi vì tôi không hiểu điều đó ... – wishi

2

Tôi tìm thấy liên kết này, nói về vấn đề của bạn. Mặc dù nó không thực sự cung cấp giải pháp/thư viện, tôi nghĩ nó sẽ giúp ích. http://www.stepthreeprofit.com/2008/06/cross-platform-monitoring-of-filesystem.html

Tôi không nghĩ có nền tảng đa nền tảng, vì vậy bạn có thể muốn tự cuộn của riêng mình.

Tôi không có kinh nghiệm trong lĩnh vực này nên tôi không thực sự chắc chắn. Tôi hi vọng cái này giúp được.

Lưu ý
Tôi đã sửa lỗi, gamin hiện có trên cygwin như Adam Bernier đã chỉ ra cho tôi trong nhận xét. Bạn có thể muốn nghiên cứu các tùy chọn khác trên cygwin (nếu chúng tồn tại).

+0

Dường như là một số phản hồi tốt cho Gamin trên Linux. FWIW, Gamin được liệt kê trong các gói Cygwin: http://cygwin.com/packages/ – bernie

+0

Ah! Cygwin! Tôi không nghĩ về điều đó. Tôi đứng sửa. – batbrat

0

Cách dễ nhất trên Linux là sử dụng inotifywait (cho rằng hạt nhân của bạn đã đủ gần đây). Bạn không cần bất kỳ ràng buộc đặc biệt nào, inotifywait có thể được tùy chỉnh để in các dòng đầu ra trên đầu ra tiêu chuẩn theo bất kỳ cách nào bạn muốn. Hãy xem và this question để có ví dụ điển hình.

+0

Ông đặc biệt đề cập đến nền tảng chéo.inotifywait chỉ dành cho linux –

81

Tôi đang làm việc trên thư viện được cấp phép MIT giúp Python chương trình theo dõi sự kiện hệ thống tệp theo cách nhất có thể. Có những khác biệt mà tôi đang cố gắng giải quyết. Cao phiên bản alpha tại thời điểm này:

Kiểm tra nó ra ở đây: http://github.com/gorakhargosh/watchdog/

Patches và đóng góp đều được chào đón.

Hy vọng điều đó sẽ hữu ích. =) Chúc mừng.

+0

Cảm ơn rất nhiều, tôi đã tìm kiếm một giải pháp nền tảng chéo và cơ quan giám sát thực sự hữu ích! – mtrovo

+0

Khi nào điều này sẽ có sẵn cho python3? – avendael

+3

@avendael - Bây giờ, rõ ràng. Nó hỗ trợ py3k tại thời điểm này. –

4

Ngoài ra kiểm tra tùy chọn này:

http://pypi.python.org/pypi/watchdog

Đã được sử dụng với một ứng dụng đa nền tảng trên Windows và OS X.

+3

Có thể do tác giả của cơ quan giám sát đã đăng về nó trong một câu trả lời một năm trước đó và không có nhiều trong phản ứng này? Có lẽ không có giá trị một downvote, nhưng không có nhiều giá trị một upvote hoặc. – fencepost

+1

Tôi thích nó bởi vì anh ấy nói anh ấy đã sử dụng nó và không sao cả. – droope

+0

Tôi chưa bao giờ hiểu được tại sao câu trả lời lại bị giảm giá. Đây là cách sử dụng cơ quan giám sát: http://pythonhosted.org/watchdog/quickstart.html – swdev

Các vấn đề liên quan