Skip to main content

fallback-python-shell

Use run_shell with Python heredoc when execute_code_sandbox or read_file fail

소스 정보

저장소
HKUDS/OpenSpace
최근 소스 활동
2026년 7월 17일 03:43
감지된 SKILL.md 언어
영어
스타
7,776
포크
926

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
fallback-python-shell
description
Use run_shell with Python heredoc when execute_code_sandbox or read_file fail
# Shell-Based Python Fallback ## When to Use Use this fallback pattern when: - `execute_code_sandbox` returns 'unknown error' - `read_file` returns 'unknown error' for supported formats - You need to process documents, analyze data, or read files programmatically ## Core Technique Run Python code through `run_shell` using a heredoc. This bypasses sandbox execution issues while maintaining Python's full capabilities for file I/O and data processing. ### Basic Pattern ```bash python3 << 'EOF' # Your Python code here import json import os # Example: Read and process a file with open('/path/to/file.txt', 'r') as f: content = f.read() print(content) EOF ``` ### Key Syntax Points 1. Use `python3 << 'EOF'` (quoted EOF prevents variable expansion in the heredoc) 2. Indent Python code starting from column 0 (no extra indentation from shell) 3. End with `EOF` on its own line with no leading/trailing whitespace 4. Print results to stdout to capture them in the tool response ## Common Use Cases ### Reading Files (Fallback for read_file) ```bash python3 << 'EOF' import json # Read text file with open('document.txt', 'r') as f: content = f.read() print(content) # Read JSON file with open('data.json', 'r') as f: data = json.load(f) print(json.dumps(data, indent=2)) EOF ``` ### Processing Excel/CSV Files ```bash python3 << 'EOF' import pandas as pd # Read Excel file df = pd.read_excel('data.xlsx', sheet_name='Sheet1') print(df.to_string()) print(f"Shape: {df.shape}") # Read CSV df = pd.read_csv('data.csv') print(df.head(10)) EOF ``` ### Reading PDF Files ```bash python3 << 'EOF' import fitz # PyMuPDF doc = fitz.open('document.pdf') for page_num in range(len(doc)): page = doc[page_num] text = page.get_text() print(f"=== Page {page_num + 1} ===") print(text) doc.close() EOF ``` ### Reading Word Documents ```bash python3 << 'EOF' from docx import Document doc = Document('document.docx') for para in doc.paragraphs: print(para.text) EOF ``` ### Data Analysis ```bash python3 << 'EOF' import pandas as pd import numpy as np df = pd.read_csv('data.csv') # Basic statistics print(f"Shape: {df.shape}") print(f"Columns: {list(df.columns)}") print(df.describe()) # Filter and aggregate result = df.groupby('category').agg({'value': 'sum'}) print(result) EOF ``` ## Best Practices 1. **Error Handling**: Wrap file operations in try/except blocks ```bash python3 << 'EOF' try: with open('file.txt', 'r') as f: content = f.read() print(content) except FileNotFoundError: print("ERROR: File not found") except Exception as e: print(f"ERROR: {e}") EOF ``` 2. **Large Output**: For large files, process in chunks or print summaries ```bash python3 << 'EOF' with open('large_file.csv', 'r') as f: for i, line in enumerate(f): if i < 10: print(line.strip()) else: print("... truncated ...") break EOF ``` 3. **Working Directory**: Remember run_shell executes in the current working directory. Use absolute paths or ensure you're in the right directory. 4. **Multiple Steps**: Chain related operations in a single heredoc rather than multiple calls ```bash python3 << 'EOF' # Do all related work in one call with open('input.json') as f: data = json.load(f) processed = [transform(x) for x in data] with open('output.json', 'w') as f: json.dump(processed, f) print("Processing complete") EOF ``` ## Troubleshooting - **Module not found**: Some packages may not be available. Stick to standard library or commonly pre-installed packages (pandas, numpy are often available). - **Permission errors**: Ensure files aren't in protected directories. - **Character encoding**: Specify encoding explicitly: `open('file.txt', 'r', encoding='utf-8')` - **Very long code**: Split into multiple heredocs or write to a temporary .py file first.
GitHub에서 보기