The Sandbox provides a file system interface through the fs property. You can upload local files, download files from the sandbox, list directories, and manage files with full metadata access.

Uploading Files

Basic File Upload

from beam import Sandbox, Image

sandbox = Sandbox(image=Image(python_version=PythonVersion.Python311))
sb = sandbox.create()

# Upload a local file to the sandbox
sb.fs.upload_file("my_script.py", "/workspace/my_script.py")

Uploading Multiple Files

# Upload several files
files_to_upload = [
    ("main.py", "/workspace/main.py"),
    ("requirements.txt", "/workspace/requirements.txt"),
    ("data.csv", "/workspace/data/data.csv"),
    ("config.yaml", "/workspace/config/config.yaml")
]

for local_path, sandbox_path in files_to_upload:
    sb.fs.upload_file(local_path, sandbox_path)
    print(f"Uploaded {local_path} to {sandbox_path}")

Downloading Files

Basic File Download

# Download a file from the sandbox
sb.fs.download_file("/workspace/output.txt", "local_output.txt")

# Download to a specific directory
sb.fs.download_file("/workspace/results/data.csv", "downloads/data.csv")

Downloading Multiple Files

# Download all files in a directory
files = sb.fs.list_files("/workspace/results")
for file in files:
    if not file.is_dir:
        local_path = f"downloads/{file.name}"
        sb.fs.download_file(f"/workspace/results/{file.name}", local_path)
        print(f"Downloaded {file.name}")

File Management

Listing Files and Directories

# List files in workspace
files = sb.fs.list_files("/workspace")
for file in files:
    if file.is_dir:
        print(f"📁 {file.name}/")
    else:
        print(f"📄 {file.name} ({file.size} bytes)")

File Information

# Get detailed information about a file
file_info = sb.fs.stat_file("/workspace/my_script.py")

print(f"Name: {file_info.name}")
print(f"Size: {file_info.size} bytes")
print(f"Is Directory: {file_info.is_dir}")
print(f"Permissions: {oct(file_info.permissions)}")
print(f"Owner: {file_info.owner}")
print(f"Group: {file_info.group}")
print(f"Modified: {file_info.mod_time}")