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 文件夹。")
相关推荐
哈里谢顿14 小时前
Python 高并发服务限流终极方案:从原理到生产落地(2026 实战指南)
python
用户8356290780511 天前
无需 Office:Python 批量转换 PPT 为图片
后端·python
markfeng81 天前
Python+Django+H5+MySQL项目搭建
python·django
GinoWi1 天前
Chapter 2 - Python中的变量和简单的数据类型
python
JordanHaidee1 天前
Python 中 `if x:` 到底在判断什么?
后端·python
ServBay1 天前
10分钟彻底终结冗长代码,Python f-string 让你重获编程自由
后端·python
闲云一鹤1 天前
Python 入门(二)- 使用 FastAPI 快速生成后端 API 接口
python·fastapi
Rockbean1 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
曲幽1 天前
FastAPI + Ollama 实战:搭一个能查天气的AI助手
python·ai·lora·torch·fastapi·web·model·ollama·weatherapi
用户60648767188961 天前
国内开发者如何接入 Claude API?中转站方案实战指南(Python/Node.js 完整示例)
人工智能·python·api