You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python能否创建并写入另一个.py文件?开发Python工作表生成器咨询

如何用Python创建并写入另一个Python文件(附工作表生成器实现)

当然可以!Python完全支持创建和写入其他Python文件——这其实就是基础文件操作的典型场景,我会结合你的工作表生成器需求,帮你把功能实现出来,顺便修正原代码里的几个小问题。

首先先梳理下原代码里的几个小bug:

  • 类的构造函数应该是__init__(双下划线,不是单下划线),而且赋值要和参数对应;
  • 读取文件时你用了y.open()但后面写的是f.read(),变量名不匹配;
  • 拆分后的题目变量是普通全局变量,不能用ws.a这种类属性的方式调用。

下面是修正并完成后的完整代码,重点实现了renderws()函数生成Python文件的功能:

class Worksheet:
    def __init__(self, number, language):
        self.number = number
        self.language = language
        self.questions = []

# 读取题目文件(用with语句自动管理文件关闭,更安全)
questions_file = input('Questions file: ')
try:
    with open(questions_file, mode='r') as f:
        content = f.read()
        # 拆分题目,确保格式正确
        question_parts = content.split(';')
        if len(question_parts) != 5:
            print("错误:题目文件需要包含5个用分号分隔的题目!")
            exit()
        q1, q2, q3, q4, q5 = question_parts
except FileNotFoundError:
    print(f"错误:找不到文件 {questions_file}")
    exit()

ws_number = input('Worksheet number: ')
ws_language = input('Language: ')
title = f"{ws_language} Worksheet {ws_number}"

# 初始化工作表实例
worksheet = Worksheet(ws_number, ws_language)
worksheet.questions = [q1, q2, q3, q4, q5]

def renderws():
    # 自定义生成的Python文件名,比如按工作表编号命名
    output_file = f"worksheet_{ws_number}.py"
    
    # 构造要写入新Python文件的代码内容
    generated_code = f'''#!/usr/bin/env python3
# 自动生成的{title}

def display_worksheet():
    print("{title}")
    print("=" * len("{title}"))
    print(f"1: {worksheet.questions[0]}")
    print(f"2: {worksheet.questions[1]}")
    print(f"3: {worksheet.questions[2]}")
    print(f"4: {worksheet.questions[3]}")
    print(f"5: {worksheet.questions[4]}")

if __name__ == "__main__":
    display_worksheet()
'''
    # 写入并创建Python文件
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(generated_code)
    
    print(f"✅ 成功生成工作表文件:{output_file}")

# 调用生成函数
renderws()

关键功能说明:

  1. 文件创建与写入:用open(output_file, 'w')打开文件,'w'模式表示写入——如果文件不存在会自动创建,存在则覆盖(如果需要追加内容可以用'a'模式)。
  2. 动态生成代码:用f-string把工作表的标题、题目等动态内容插入到生成的Python代码里,这样生成的文件会包含对应的数据。
  3. 安全的文件操作:全程用with语句处理文件,不用手动调用close(),避免资源泄漏。
  4. 错误处理:添加了文件不存在、题目格式错误的判断,让程序更健壮。

扩展小提示:

  • 如果要生成更复杂的Python代码(比如包含类、函数逻辑),可以用模板库(比如Jinja2)来管理代码模板,比直接拼接字符串更清晰;
  • 如果题目里包含引号、换行符等特殊字符,记得做转义处理(比如把双引号换成\");
  • 可以给生成的文件添加可执行权限(在Linux/macOS下用os.chmod(output_file, 0o755)),直接运行。

内容的提问来源于stack exchange,提问作者sean teo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:04:23