py脚本一键生成常见文件格式案例

我的常见:附件上传测试...

bash 复制代码
import os
import csv
import json

# 引入第三方库 (需先 pip install)
try:
    from docx import Document
    from openpyxl import Workbook
    from reportlab.pdfgen import canvas
    from PIL import Image, ImageDraw, ImageFont
except ImportError as e:
    print("❌ 缺少依赖库,请先运行: pip install python-docx openpyxl reportlab Pillow")
    exit()

# 配置输出目录
OUTPUT_DIR = "test_data"


def init_dir():
    if not os.path.exists(OUTPUT_DIR):
        os.makedirs(OUTPUT_DIR)
        print(f"📁 已创建目录: {OUTPUT_DIR}")


def gen_txt():
    """生成 TXT 文件"""
    path = os.path.join(OUTPUT_DIR, "test.txt")
    with open(path, "w", encoding="utf-8") as f:
        f.write("这是一个测试文本文件。\n用于测试转换 OFD 功能。\nHello World!")
    print(f"✅ 生成 TXT: {path}")


def gen_csv():
    """生成 CSV 文件"""
    path = os.path.join(OUTPUT_DIR, "test.csv")
    with open(path, "w", encoding="utf-8", newline='') as f:
        writer = csv.writer(f)
        writer.writerow(["ID", "Name", "Role"])
        writer.writerow(["1001", "Chen Fei", "Admin"])
        writer.writerow(["1002", "Zhang San", "User"])
    print(f"✅ 生成 CSV: {path}")


def gen_json():
    """生成 JSON 文件"""
    path = os.path.join(OUTPUT_DIR, "test.json")
    data = {
        "project": "OFD Converter",
        "version": 1.0,
        "supported_formats": ["doc", "pdf", "txt"]
    }
    with open(path, "w", encoding="utf-8") as f:
        json.dump(data, f, indent=4)
    print(f"✅ 生成 JSON: {path}")


def gen_xml():
    """生成 XML 文件"""
    path = os.path.join(OUTPUT_DIR, "test.xml")
    content = """<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Developer</to>
  <from>Admin</from>
  <heading>Test OFD</heading>
  <body>Don't forget to handle this file!</body>
</note>"""
    with open(path, "w", encoding="utf-8") as f:
        f.write(content)
    print(f"✅ 生成 XML: {path}")


def gen_html():
    """生成 HTML 文件"""
    path = os.path.join(OUTPUT_DIR, "test.html")
    content = """<!DOCTYPE html>
<html>
<head><title>Test Page</title></head>
<body>
<h1>Hello OFD</h1>
<p>This is a test html page.</p>
</body>
</html>"""
    with open(path, "w", encoding="utf-8") as f:
        f.write(content)
    print(f"✅ 生成 HTML: {path}")


def gen_docx():
    """生成 Word (.docx) 文件"""
    path = os.path.join(OUTPUT_DIR, "test.docx")
    doc = Document()
    doc.add_heading('OFD 测试文档', 0)
    doc.add_paragraph('这是一个由 Python 自动生成的 Word 文档。')
    doc.add_paragraph('用于验证 Spire.Doc 转 OFD 的效果。')
    doc.save(path)
    print(f"✅ 生成 DOCX: {path}")


def gen_xlsx():
    """生成 Excel (.xlsx) 文件"""
    path = os.path.join(OUTPUT_DIR, "test.xlsx")
    wb = Workbook()
    ws = wb.active
    ws.title = "测试数据"
    # 写入表头
    ws['A1'] = "文件名"
    ws['B1'] = "格式"
    ws['C1'] = "状态"
    # 写入数据
    ws.append(["test.docx", "Word", "Ready"])
    ws.append(["test.pdf", "PDF", "Ready"])
    wb.save(path)
    print(f"✅ 生成 XLSX: {path}")


def gen_pdf():
    """生成 PDF 文件"""
    path = os.path.join(OUTPUT_DIR, "test.pdf")
    c = canvas.Canvas(path)
    c.drawString(100, 800, "Hello OFD Converter!")
    c.drawString(100, 780, "This is a standard PDF document generated by Python.")
    c.drawString(100, 760, "Format: A4")
    c.save()
    print(f"✅ 生成 PDF: {path}")


def gen_image(fmt="png"):
    """生成图片 (jpg/png)"""
    path = os.path.join(OUTPUT_DIR, f"test.{fmt}")
    # 创建一个 400x200 的白色背景图片
    img = Image.new('RGB', (400, 200), color=(73, 109, 137))
    d = ImageDraw.Draw(img)
    # 写入简单的文字 (默认字体)
    d.text((20, 80), f"Test Image ({fmt.upper()})", fill=(255, 255, 255))
    img.save(path)
    print(f"✅ 生成 {fmt.upper()}: {path}")


if __name__ == "__main__":
    print("🚀 开始生成测试文件...")
    init_dir()

    # 办公文档
    gen_docx()
    gen_xlsx()
    gen_pdf()

    # 文本数据
    gen_txt()
    gen_csv()
    gen_json()
    gen_xml()
    gen_html()

    # 图片
    gen_image("png")
    gen_image("jpg")

    print("\n🎉 所有文件生成完毕!请查看 test_data 文件夹。")
相关推荐
可乐鸡翅yeah_2 分钟前
HLS流媒体首屏起播慢深度优化,从分片、索引、播放器全链路调优
开发语言·javascript·ecmascript·m3u8·m3u8在线
luj_17685 分钟前
生物体如何应对功能击穿?
c语言·开发语言·c++·经验分享·算法
luj_17687 分钟前
击穿分析五大关键步骤
开发语言·网络·c++·经验分享·算法
wuyk5559 分钟前
从零吃透 MQTT 通信|第 11 章 MQTT 项目调试验证、性能优化、常见疑难问题、OTA 升级基础
c语言·开发语言·stm32·学习·性能优化
步行cgn13 分钟前
Spring 注入 Properties 详解
java·python·spring
海盗123413 分钟前
微软技术日报 2026-09-14:Rust 升为微软一级语言,云业务重组为智能体与基础设施
开发语言·microsoft·rust
shirsl22 分钟前
算法 Day3-队列 / deque + 链表
数据结构·python·算法·链表
名字还没想好☜31 分钟前
Python 的 __call__ 实战:让实例像函数一样被调用,做带状态计数器、缓存器与可配置策略
开发语言·后端·python·缓存·编程语言
skywalk816333 分钟前
第 23 轮方向确定:保护表通用化替代轮。先深入探查剩余保护表依赖场景和任务 6 的四阶段路径,再写任务书。9.14
开发语言·人工智能·光明
cpolar技术支持38 分钟前
AI Agent 跑半小时就忘目标?用检查点与任务账本做可恢复长任务,cpolar 分享只读时间线
python·sqlite·cpolar·ai agent·任务恢复