--- name: l1-file-read description: "L1 原子技能:文件内容读取。支持读取 PDF、Excel、CSV、JSON、Markdown 等常见格式并转为纯文本。" layer: 1 domain: sensing keywords: - file - read - pdf - excel - csv - parse input_schema: "{ file_path: string }" output_schema: "{ content: string, format: string, size: number }" --- # L1: File Read(文件读取原子技能) ## 能力 读取本地文件内容,支持多种格式,统一输出为纯文本。 ## 使用方法 ### 纯文本 / Markdown / JSON / YAML ```bash cat "" ``` ### CSV → 表格文本 ```bash python3 -c " import csv, sys with open(sys.argv[1], 'r') as f: reader = csv.reader(f) for row in reader: print(' | '.join(row)) " "" ``` ### Excel (.xlsx) ```bash python3 -c " import sys try: import openpyxl wb = openpyxl.load_workbook(sys.argv[1], read_only=True) for sheet in wb.sheetnames: ws = wb[sheet] print(f'=== Sheet: {sheet} ===') for row in ws.iter_rows(max_row=100, values_only=True): print(' | '.join(str(c) if c is not None else '' for c in row)) except ImportError: print('ERROR: openpyxl not installed. Run: pip3 install openpyxl') " "" ``` ### PDF → 纯文本 ```bash python3 -c " import sys try: import PyPDF2 with open(sys.argv[1], 'rb') as f: reader = PyPDF2.PdfReader(f) for i, page in enumerate(reader.pages[:20]): text = page.extract_text() if text: print(f'--- Page {i+1} ---\n{text}') except ImportError: import subprocess result = subprocess.run(['strings', sys.argv[1]], capture_output=True, text=True) print(result.stdout[:5000]) " "" ``` ## 输入 | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | file_path | string | ✅ | 本地文件路径 | ## 输出 文件内容的纯文本表示,截取前 5000 字符。 ## 约束 - 最大读取行数:100 行(Excel)或 20 页(PDF) - 不支持加密/密码保护的文件 - 二进制文件(图片、视频)返回"不支持的文件格式"