| name | local-python-tools |
| description | 本地 Python 第三方工具集成的 AI 辅助工作流。当用户需要以下操作时激活:(1) 获取股票、基金、期货、宏观等金融数据(akshare/tushare);(2) 创建或编辑 Word、Excel、PowerPoint 文件(python-docx/python-pptx/openpyxl/xlsxwriter);(3) 网页内容抓取、解析、提取(requests/beautifulsoup4/lxml/curl_cffi);(4) 图片处理(裁剪、压缩、格式转换);(5) 任何涉及 pandas 数据分析、JSON/表格处理的任务。直接在本地 Python 环境执行所有操作,无需调用外部付费 API。 |
local-python-tools
本地 Python 工具集,覆盖金融数据获取、Office 文档生成、网页数据采集、图片处理四大场景。
环境依赖
所有工具已安装于 C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages,直接 import 即可:
import akshare as ak
import tushare as ts
import pandas as pd
import numpy as np
import requests
from bs4 import BeautifulSoup
import lxml
from pptx import Presentation
from docx import Document
from openpyxl import load_workbook, Workbook
import xlsxwriter
import xlrd
from PIL import Image
注意:Windows 环境,命令行运行 Python 请用 python,非 python3。
场景一:金融数据获取
akshare(实时/免费)
参考详细用法:references/finance.md#akshare
df = ak.stock_zh_a_spot_em()
df = ak.stock_zh_a_hist(symbol="000001", period="daily", start_date="20250101", end_date="20260321")
df = ak.stock_zh_index_spot_em()
df = ak.stock_lhb_detail_em(date="20260321")
df = ak.fund_open_fund_info_em(fund="000001", indicator="历史净值")
tushare(基本面/需要 token)
参考详细用法:references/finance.md#tushare
import tushare as ts
ts.set_token("你的token")
pro = ts.pro_api()
df = pro.daily(ts_code="000001.SZ", start_date="20250101", end_date="20260321")
df = pro.stock_basic(exchange='', list_status='L')
df = pro.fina_indicator(ts_code="000001.SZ", start_date="20250101")
场景二:Office 文档生成
PowerPoint(python-pptx)
参考详细用法:references/office.md#pptx
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])
title = slide.shapes.add_textbox(Inches(0.5), Inches(0.3), Inches(9), Inches(0.8))
tf = title.text_frame
tf.text = "报告标题"
tf.paragraphs[0].font.size = Pt(32)
tf.paragraphs[0].font.bold = True
body = slide.shapes.add_textbox(Inches(0.5), Inches(1.5), Inches(9), Inches(5))
tf = body.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
p.text = "这是正文内容"
p.font.size = Pt(18)
rows, cols, data = 3, 3, [["A","B","C"],["D","E","F"],["G","H","I"]]
table = slide.shapes.add_table(rows, cols, Inches(0.5), Inches(3), Inches(9), Inches(1.5)).table
for i, row in enumerate(data):
for j, cell (row):
table.cell(i, j).text = cell
prs.save()
Word(python-docx)
参考详细用法:references/office.md#docx
from docx import Document
from docx.shared import Pt, RGBColor, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document()
doc.add_heading("文档标题", level=1)
doc.add_paragraph("正文内容", style="Normal")
doc.add_picture("image.png", width=Inches(4))
table = doc.add_table(rows=2, cols=3)
table.style = "Light Grid Accent 1"
doc.save("C:\\Users\\Administrator\\Desktop\\output.docx")
Excel(openpyxl + xlsxwriter)
参考详细用法:references/office.md#excel
from openpyxl import load_workbook
wb = load_workbook("input.xlsx")
ws = wb.active
ws["A1"] = "Hello"
wb.save("output.xlsx")
import xlsxwriter
wb = xlsxwriter.Workbook("output.xlsx")
ws = wb.add_worksheet("数据")
ws.write(0, 0, "标题")
chart = wb.add_chart({"type": "column"})
ws.write_column("A", [1,2,3,4,5])
chart.add_series({"values": "=Sheet1!$A$1:$A$5"})
ws.insert_chart("C1", chart)
wb.close()
场景三:网页数据采集
参考详细用法:references/web.md
import requests
from bs4 import BeautifulSoup
import json
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}
r = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(r.content, "lxml")
titles = soup.select("h2.title")
links = [a["href"] for a in soup.find_all("a", href=True)]
text = soup.get_text(strip=True)
data = r.json()
from curl_cffi import requests as creq
r = creq.get(url, impersonate="chrome")
场景四:图片处理
参考详细用法:references/image.md
from PIL import Image
img = Image.open("input.png")
cropped = img.crop((100, 100, 400, 400))
resized = img.resize((800, 600))
img.convert("RGB").save("output.jpg")
img.save("compressed.jpg", quality=85, optimize=True)
from PIL import ImageDraw, ImageFont
draw = ImageDraw.Draw(img)
draw.text((10, 10), "Watermark", fill=(255,255,255))
常用工具速查
| 任务 | 推荐工具 |
|---|
| A 股实时行情 | akshare stock_zh_a_spot_em |
| K 线历史数据 | akshare stock_zh_a_hist |
| 财务报表 | tushare pro.fina_indicator |
| 生成 PPT | python-pptx Presentation |
| 生成 Word | python-docx Document |
| 读写 Excel | openpyxl(推荐)/ xlrd(读旧版) |
| 高速写 Excel | xlsxwriter |
| 发 HTTP 请求 | requests / curl_cffi |
| 解析 HTML | BeautifulSoup(r.content, "lxml") |
| 数据分析 | pandas + numpy |
| 图片裁剪压缩 | PIL.Image |
| 逆向 JS | execjs / mini_racer |
输出路径规范
- 桌面:
C:\Users\Administrator\Desktop\
- 工作区:
C:\Users\Administrator\.openclaw\workspace\
- 所有文件写入前确认路径存在,父目录不存在时自动创建。