폴링없이 파일 변경 감지
이 질문에 이미 답변이 있습니다.
- 파일의 변경 사항을 어떻게 감시합니까? 23 답변
파일 시스템의 파일이 수정되었는지 여부를 감지하기 위해 Python 프로그램 내에서 메서드를 사용하려고합니다. 시스템의 마지막 수정 날짜를 확인하기 위해 5 초마다 무언가를 실행할 수 있다는 것을 알고 있지만 프로그램을 반복적으로 확인하지 않고도이 작업을 수행하는 더 쉬운 방법이 있는지 궁금합니다. .
누구든지 그러한 방법을 알고 있습니까?
Linux의 경우 pyinotify가 있습니다.
홈페이지에서 :
Pyinotify는 파일 시스템 변경을 모니터링하기위한 Python 모듈입니다. Pyinotify는 inotify라는 Linux 커널 기능 (커널 2.6.13에 병합 됨)에 의존합니다. inotify는 이벤트 기반 알림이며, 알림은 3 개의 시스템 호출을 통해 커널 공간에서 사용자 공간으로 내보내집니다. pyinotify는 이러한 시스템 호출을 바인딩하고 그 위에 구현을 제공하여 이러한 기능을 조작하는 일반적이고 추상적 인 방법을 제공합니다.
따라서 분명히 크로스 플랫폼이 아니며 새로운 커널 버전에 의존합니다. 그러나 내가 볼 수있는 한 커널 지원을 요구하는 것은 비 폴링 메커니즘에 대해 사실 일 것입니다.
디렉토리 감시를위한 우수한 크로스 플랫폼 라이브러리.
웹 사이트에서
지원되는 플랫폼
Linux 2.6 (inotify)
Mac OS X (FSEvents, kqueue)
FreeBSD / BSD (kqueue)
Windows (I / O 완료 포트가있는 ReadDirectoryChangesW, ReadDirectoryChangesW 작업자 스레드)
OS 독립적 (디렉터리 스냅 샷용 디스크 폴링 및 주기적으로 비교, 느리고 권장되지 않음)
나는 몇 개의 프로젝트에서 그것을 사용했으며 훌륭하게 작동하는 것 같습니다.
창문에는 다음이 있습니다.
watcher 는 .NET FileSystemWatcher API의 멋진 파이썬 포트입니다.
또한 (내가 쓴) dirwatch 있습니다.
둘 다 Windows ReadDirectoryChangesW 함수 에 의존 합니다. 실제 작업을 위해서는 watcher (적절한 C 확장, 좋은 API, 파이썬 2 및 3 지원)를 사용합니다.
Mine은 대부분 Windows에서 관련 API를 호출하는 실험이므로 Python에서 이러한 항목을 호출하는 예제를 원하는 경우에만 흥미 롭습니다.
또한 앞서 언급 한 pyinotify와 매우 유사한 inotifyx 가 표시되어야 하지만 덜 변경되는 API가 있다고합니다.
참고 URL : https://stackoverflow.com/questions/5738442/detect-file-change-without-polling
'program story' 카테고리의 다른 글
| Android에서 SD 카드의 텍스트 파일을 어떻게 읽을 수 있습니까? (0) | 2020.11.27 |
|---|---|
| 먼저 EF 코드가있는 고유 키 (0) | 2020.11.27 |
| Html.EnumDropdownListFor : 기본 텍스트 표시 (0) | 2020.11.26 |
| Android Studio에서 Gradle '오프라인 모드'를 비활성화하는 방법은 무엇입니까? (0) | 2020.11.26 |
| PHP 7에서“선언은… 호환되어야합니다”경고가 표시되지 않습니다. (0) | 2020.11.26 |