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 文件夹。")
相关推荐
曹轲恒6 小时前
Java中断
java·开发语言
施棠海6 小时前
监听与回调的三个demo
java·开发语言
時肆4856 小时前
C语言造轮子大赛:从零构建核心组件
c语言·开发语言
赴前尘7 小时前
golang 查看指定版本库所依赖库的版本
开发语言·后端·golang
de之梦-御风7 小时前
【C#.Net】C#开发的未来前景
开发语言·c#·.net
web3.08889997 小时前
微店商品详情API实用
python·json·时序数据库
知乎的哥廷根数学学派7 小时前
基于数据驱动的自适应正交小波基优化算法(Python)
开发语言·网络·人工智能·pytorch·python·深度学习·算法
de之梦-御风7 小时前
【C#.Net】C#在工业领域的具体应用场景
开发语言·c#·.net
sunfove7 小时前
将 Python 仿真工具部署并嵌入个人博客
开发语言·数据库·python
Learner7 小时前
Python类
开发语言·python