Skip to content

Latest commit

 

History

History
95 lines (75 loc) · 2.88 KB

File metadata and controls

95 lines (75 loc) · 2.88 KB

Watch sandbox directory for changes

You can watch a directory for changes using the files.watchDir() method in JavaScript and files.watch_dir() method in Python.

Since events are tracked asynchronously, their delivery may be delayed. It's recommended not to collect or close watcher immediately after making a change. ```js import { Sandbox, FilesystemEventType } from '@e2b/code-interpreter'

const sandbox = await Sandbox.create() const dirname = '/home/user'

// Start watching directory for changes const handle = await sandbox.files.watchDir(dirname, async (event) => { // $HighlightLine console.log(event) // $HighlightLine if (event.type === FilesystemEventType.WRITE) { // $HighlightLine console.log(wrote to file ${event.name}) // $HighlightLine } // $HighlightLine }) // $HighlightLine

// Trigger file write event await sandbox.files.write(${dirname}/my-file, 'hello')

```python
from e2b_code_interpreter import Sandbox

sandbox = Sandbox.create()
dirname = '/home/user'

# Watch directory for changes
handle = sandbox.files.watch_dir(dirname) # $HighlightLine
# Trigger file write event
sandbox.files.write(f"{dirname}/my-file", "hello")

# Retrieve the latest new events since the last `get_new_events()` call
events = handle.get_new_events() # $HighlightLine
for event in events: # $HighlightLine
  print(event) # $HighlightLine
  if event.type == FilesystemEventType.Write: # $HighlightLine
    print(f"wrote to file {event.name}") # $HighlightLine

Recursive Watching

You can enable recursive watching using the parameter recursive.

When rapidly creating new folders (e.g., deeply nested path of folders), events other than `CREATE` might not be emitted. To avoid this behavior, create the required folder structure in advance. ```js import { Sandbox, FilesystemEventType } from '@e2b/code-interpreter'

const sandbox = await Sandbox.create() const dirname = '/home/user'

// Start watching directory for changes const handle = await sandbox.files.watchDir(dirname, async (event) => { console.log(event) if (event.type === FilesystemEventType.WRITE) { console.log(wrote to file ${event.name}) } }, { recursive: true // $HighlightLine })

// Trigger file write event await sandbox.files.write(${dirname}/my-folder/my-file, 'hello') // $HighlightLine

```python
from e2b_code_interpreter import Sandbox

sandbox = Sandbox.create()
dirname = '/home/user'

# Watch directory for changes
handle = sandbox.files.watch_dir(dirname, recursive=True) # $HighlightLine
# Trigger file write event
sandbox.files.write(f"{dirname}/my-folder/my-file", "hello") # $HighlightLine

# Retrieve the latest new events since the last `get_new_events()` call
events = handle.get_new_events()
for event in events:
  print(event)
  if event.type == FilesystemEventType.Write:
    print(f"wrote to file {event.name}")