python
复制代码
import gradio as gr
import pandas as pd
import time # 模拟耗时操作
def scan_and_get_stats():
"""模拟文档扫描与统计过程,逐步返回日志和最终表格"""
# 步骤1
log = "🔍 正在初始化扫描任务...\n"
yield pd.DataFrame(), log # 先清空表格或保留原表格,这里传空表
time.sleep(0.5)
# 步骤2
log += "📂 正在读取文档目录...\n"
yield pd.DataFrame(), log
time.sleep(0.6)
# 步骤3
log += "🏷️ 正在按类别分类文档...\n"
yield pd.DataFrame(), log
time.sleep(0.7)
# 步骤4:生成真实数据
log += "📊 正在计算各类别占用空间...\n"
yield pd.DataFrame(), log
time.sleep(0.5)
# 模拟实际统计结果
data = {
"文档类别": ["合同", "财务报告", "发票", "会议纪要", "技术文档", "用户手册", "其他"],
"占用空间 (MB)": [120, 340, 85, 45, 210, 160, 95]
}
df = pd.DataFrame(data)
# 步骤5:完成
log += "✅ 扫描与统计完成!\n"
yield df, log
# 构建界面
with gr.Blocks(title="文档类别与空间统计") as demo:
gr.Markdown("## 📁 文档类别与存储空间统计")
with gr.Row():
with gr.Column(scale=2):
stats_table = gr.DataFrame(
value=pd.DataFrame({"文档类别": [], "占用空间 (MB)": []}),
headers=["文档类别", "占用空间 (MB)"],
label="文档统计结果"
)
with gr.Column(scale=1):
log_box = gr.Textbox(
label="执行日志",
interactive=False,
lines=10,
max_lines=15,
placeholder="点击"刷新数据"查看执行步骤..."
)
refresh_btn = gr.Button("🔄 刷新数据")
# 绑定事件:刷新按钮点击后,逐步更新表格和日志
refresh_btn.click(
fn=scan_and_get_stats,
inputs=None,
outputs=[stats_table, log_box]
)
if __name__ == "__main__":
demo.launch()
python
复制代码
import gradio as gr
import pandas as pd
# 模拟的文档类别与空间数据(单位:MB)
def get_document_stats():
data = {
"文档类别": ["合同", "财务报告", "发票", "会议纪要", "技术文档", "用户手册"],
"占用空间 (MB)": [120, 340, 85, 45, 210, 160]
}
df = pd.DataFrame(data)
return df
# 构建 Gradio 界面
with gr.Blocks(title="文档类别与空间统计") as demo:
gr.Markdown("## 📁 文档类别与存储空间统计")
# 显示表格
stats_table = gr.DataFrame(
value=get_document_stats(),
headers=["文档类别", "占用空间 (MB)"],
datatype=["str", "number"],
label="文档统计"
)
# 可选:添加刷新按钮(重新加载数据)
refresh_btn = gr.Button("🔄 刷新数据")
refresh_btn.click(fn=get_document_stats, inputs=None, outputs=stats_table)
# 启动应用
if __name__ == "__main__":
demo.launch()