Execute Python scripts reliably using file-first approach instead of heredoc
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-reliable-script-execution-5772d3e6a521 ,按照其中的说明把「reliable-script-execution」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
When executing Python code via shell commands, avoid inline heredoc execution which can fail unpredictably with 'unknown error'. Use this two-step file-first approach for more reliable script execution.
Direct heredoc Python execution like:
python3 << 'EOF'
# complex code here
EOF
Can fail with 'unknown error', especially when:
Use write_file to save your Python code to a .py file:
write_file(path="./temp_script.py", content="""
import json
data = {"key": "value"}
print(json.dumps(data))
""")
Use run_shell with explicit working directory:
run_shell(command="python3 ./temp_script.py", timeout=60)
Remove temporary files after execution:
run_shell(command="rm ./temp_script.py")
Task: Generate a JSON report with calculations
# Step 1: Write the script
write_file(
path="./generate_report.py",
content="""
import json
from datetime import datetime
revenue = 500000.00
expenses = 379577.06
net_income = revenue - expenses
report = {
"generated": datetime.now().isoformat(),
"revenue": revenue,
"expenses": expenses,
"net_income": net_income
}
print(json.dumps(report, indent=2))
"""
)
# Step 2: Execute
run_shell(command="python3 ./generate_report.py", timeout=60)
# Step 3: Clean up
run_shell(command="rm ./generate_report.py")
Use descriptive filenames: Name scripts according to their purpose (e.g., calculate_pnl.py, transform_data.py)
Set appropriate timeouts: For data processing scripts, use longer timeouts (60-300 seconds)
Specify working directory: If the script depends on relative paths, include cd /path && python3 script.py
Handle errors gracefully: Check shell output for errors and retry if needed
Clean up temporary files: Don't leave .py files cluttering the workspace unless they need to persist
Do NOT rely on heredoc for production-critical scripts:
# Unreliable - may fail with 'unknown error'
python3 << 'EOF'
# Your code here
EOF
Use file-first approach instead for consistent, debuggable execution.