Use run_shell with inline Python for reliable file I/O when execute_code_sandbox cannot access working directory files
58
66%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./benchmarks/gdpval/skills/run-shell-python-file-io/SKILL.mdUse 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.
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.
Determine which files you need to read from or write to in the working directory.
Construct a Python script that handles your file operations and execute it through run_shell:
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')
"For more complex operations, write a temporary Python script file first:
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.pyAfter execution, verify the files were created/modified correctly:
ls -la
cat output.txtUse Absolute or Relative Paths Explicitly: Always specify file paths clearly; os.getcwd() helps confirm your working directory.
Handle Errors Gracefully: Add try/except blocks to catch file I/O errors:
try:
with open('file.txt', 'r') as f:
content = f.read()
except FileNotFoundError:
print('File not found')Use Here-Docs for Complex Scripts: For scripts longer than a few lines, use bash here-documents to avoid escaping issues.
Clean Up Temporary Files: If you create temporary scripts, consider removing them after execution.
Check Working Directory First: Print os.getcwd() to confirm you're operating in the expected directory.
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')
"| 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 |
c5a9c4b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.