Skip to main content

run-shell-python-file-io

Use run_shell with inline Python for reliable file I/O when execute_code_sandbox cannot access working directory files

Quellinformationen

Repository
HKUDS/OpenSpace
Letzte Quellaktivität
17. Juli 2026 um 03:43
Erkannte Sprache von SKILL.md
Englisch
Sterne
7.776
Forks
926

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
run-shell-python-file-io
description
Use run_shell with inline Python for reliable file I/O when execute_code_sandbox cannot access working directory files
# Run Shell Python File I/O ## When to Use This Skill Use this technique when `execute_code_sandbox` cannot access files in your working directory, but you need to perform file operations (read, write, transform) as part of your task execution. ## The Pattern Instead of using `execute_code_sandbox`, run Python code directly through `run_shell` with explicit path handling. This provides reliable file I/O capabilities within the task workspace. ## How to Apply ### Step 1: Identify File Access Needs Determine which files you need to read from or write to in the working directory. ### Step 2: Write Inline Python via run_shell Construct a Python script that handles your file operations and execute it through `run_shell`: ```bash python3 -c " import os # Get the working directory work_dir = os.getcwd() print(f'Working directory: {work_dir}') # Read a file with open('input.txt', 'r') as f: content = f.read() # Process the content processed = content.upper() # Write to output file with open('output.txt', 'w') as f: f.write(processed) print('File operation complete') " ``` ### Step 3: Handle Complex Logic For more complex operations, write a temporary Python script file first: ```bash cat > /tmp/process.py << 'EOF' import os import json work_dir = os.getcwd() # Read input with open('data.json', 'r') as f: data = json.load(f) # Transform result = {k: v * 2 for k, v in data.items()} # Write output with open('result.json', 'w') as f: json.dump(result, f, indent=2) print(f'Processed {len(data)} items') EOF python3 /tmp/process.py ``` ### Step 4: Verify File Operations After execution, verify the files were created/modified correctly: ```bash ls -la cat output.txt ``` ## Best Practices 1. **Use Absolute or Relative Paths Explicitly**: Always specify file paths clearly; `os.getcwd()` helps confirm your working directory. 2. **Handle Errors Gracefully**: Add try/except blocks to catch file I/O errors: ```python try: with open('file.txt', 'r') as f: content = f.read() except FileNotFoundError: print('File not found') ``` 3. **Use Here-Docs for Complex Scripts**: For scripts longer than a few lines, use bash here-documents to avoid escaping issues. 4. **Clean Up Temporary Files**: If you create temporary scripts, consider removing them after execution. 5. **Check Working Directory First**: Print `os.getcwd()` to confirm you're operating in the expected directory. ## Common Use Cases - Reading configuration files from the workspace - Writing generated reports or outputs - Transforming data files (CSV, JSON, XML) - Batch processing multiple files - Generating structured documents (PDFs, spreadsheets) ## Example: Processing Multiple Files ```bash python3 -c " import os import glob work_dir = os.getcwd() files = glob.glob('*.txt') for f in files: with open(f, 'r') as file: content = file.read() # Process each file with open(f'processed_{f}', 'w') as out: out.write(content.strip().upper()) print(f'Processed {len(files)} files') " ``` ## Troubleshooting | Issue | Solution | |-------|----------| | File not found | Check `os.getcwd()` output; use absolute paths if needed | | Permission denied | Ensure the directory is writable; avoid protected system paths | | Encoding errors | Specify encoding explicitly: `open('file.txt', 'r', encoding='utf-8')` | | Multi-line script issues | Use here-doc (`<< 'EOF'`) instead of `-c` for complex scripts |
Auf GitHub ansehen