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

معلومات المصدر

المستودع
HKUDS/OpenSpace
آخر نشاط في المصدر
١٧ يوليو ٢٠٢٦ في ٠٣:٤٣
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٧٬٧٧٦
التفرعات
٩٢٦

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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 |
عرض على GitHub