https://github.com/rob-white/folderspy
Watch folders for file/directory events with a simple API
https://github.com/rob-white/folderspy
filesystem folder-watch linux python python2 python3 windows
Last synced: 12 months ago
JSON representation
Watch folders for file/directory events with a simple API
- Host: GitHub
- URL: https://github.com/rob-white/folderspy
- Owner: rob-white
- License: mit
- Created: 2018-10-13T03:48:29.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T01:14:57.000Z (over 3 years ago)
- Last Synced: 2025-04-04T01:30:22.496Z (12 months ago)
- Topics: filesystem, folder-watch, linux, python, python2, python3, windows
- Language: Python
- Homepage:
- Size: 38.1 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# folderspy
[](https://pypi.org/project/folderspy/)
[](https://pypi.org/project/folderspy/)
> Watch folders for file/directory events with a simple API.
## Supports
* Linux, Windows, Mac
* Python 2.7 & 3.4-3.7
## Installation
### pipenv
```sh
pipenv install folderspy
```
### pip
```sh
pip install folderspy
```
## Example
Create a ```WatchableFolder``` class for each of folders you want to watch then simply start watching them with ```FolderSpy```:
```python
import pyinotify # Linux Only
from folderspy import WatchableFolder, FolderSpy
class SaveFolder(WatchableFolder):
def __init__(self):
super(SaveFolder, self).__init__()
self.path = '/path/to/this/folder'
# Note: Only used in Linux for pyinotify bitmasks
# Can be excluded for Windows/Mac
self.listen_to = pyinotify.IN_CREATE
def process_IN_CREATE(self, event):
print('An item was created in this folder!')
FolderSpy.watch(SaveFolder())
```
## Available Folder Events
### Linux
```python
def process_IN_ACCESS(self, event):
"""A file was accessed."""
def process_IN_ATTRIB(self, event):
"""Metadata changed for a file."""
def process_IN_CLOSE_NOWRITE(self, event):
"""An unwritable file was closed."""
def process_IN_CLOSE_WRITE(self, event):
"""A writable file was closed."""
def process_IN_CREATE(self, event):
"""A file/directory was created in watched directory."""
def process_IN_DELETE(self, event):
"""A file/directory was deleted in watched directory."""
def process_IN_DELETE_SELF(self, event):
"""The watched item itself was deleted."""
def process_IN_ISDIR(self, event):
"""Any event occurred that was on a directory."""
def process_IN_MODIFY(self, event):
"""A file was modified."""
def process_IN_MOVE_SELF(self, event):
"""The watched item itself was moved somewhere."""
def process_IN_MOVED_FROM(self, event):
"""A file/directory was moved away from the current watched directory."""
def process_IN_MOVED_TO(self, event):
"""A file/directory was moved into the current watched directory."""
def process_IN_OPEN(self, event):
"""A file was opened."""
def process_IN_UNMOUNT(self, event):
"""The file system the watched directory is associated with was unmounted."""
```
### Windows
```python
def process_IN_CREATE(self, event):
"""A file/directory was created in watched directory."""
def process_IN_DELETE(self, event):
"""A file/directory was deleted in watched directory."""
def process_IN_MODIFY(self, event):
"""A file was modified."""
def process_IN_RENAMED_FROM(self, event):
"""The name the file/directory was renamed from."""
def process_IN_RENAMED_TO(self, event):
"""The name the file/directory was renamed to."""
def process_IN_ISDIR(self, event):
"""An event occurred that was on a directory."""
```
### Mac
```python
def process_IN_ATTRIB(self, event):
"""Metadata changed for a file."""
def process_IN_CREATE(self, event):
"""A file/directory was created in watched directory."""
def process_IN_DELETE(self, event):
"""A file/directory was deleted in watched directory."""
def process_IN_MODIFY(self, event):
"""A file was modified."""
def process_IN_MOVED_FROM(self, event):
"""A file/directory was moved away from the current watched directory."""
def process_IN_MOVED_TO(self, event):
"""A file/directory was moved into the current watched directory."""
```
## Dependencies
* Linux: ```pyinotify```
* Windows: ```pypiwin32```
* Mac: ```macfsevents```
## To-Do
* Start/Exit Events
* Tests
* Clean-up
## Contribute
Pull requests are welcome to add in functionality or fix bugs!