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 文件夹。")
相关推荐
Yvonne爱编码8 分钟前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚9 分钟前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂17 分钟前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
pas13625 分钟前
41-parse的实现原理&有限状态机
开发语言·前端·javascript
琹箐36 分钟前
最大堆和最小堆 实现思路
java·开发语言·算法
前端摸鱼匠1 小时前
YOLOv8 环境配置全攻略:Python、PyTorch 与 CUDA 的和谐共生
人工智能·pytorch·python·yolo·目标检测
WangYaolove13141 小时前
基于python的在线水果销售系统(源码+文档)
python·mysql·django·毕业设计·源码
Monly211 小时前
Java:修改打包配置文件
java·开发语言
AALoveTouch1 小时前
大麦网协议分析
javascript·python
我命由我123452 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime