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

如何通过用户输入执行多行Python代码?exec()报错求助

解决用户输入多行Python代码并执行的问题

问题根源

你遇到的语法错误,本质是input()函数会将用户输入的内容作为原始字符串读取。当你输入a=[1,2,3]\nfor i in a:\n\tprint(i)时,\n和\t不会被解析成换行符或制表符,而是被当成两个独立的字符(\和n、\和t)。Python执行时会把\n误认为是行续行符后跟着无效字符,从而抛出语法错误。

而你硬编码的字符串里的\n是Python语法层面的转义字符,会被自动解析成换行符,所以能正常运行。

解决方案

方案1:支持用户直接输入多行代码(推荐)

让用户直接换行输入代码,直到输入空行(或特定结束标记)再执行,更符合常规输入习惯:

while True:
    print("Enter your code (enter empty line to execute):")
    code_lines = []
    while True:
        line = input()
        if not line:
            break
        code_lines.append(line)
    full_code = '\n'.join(code_lines)
    exec(full_code)

用户输入示例:

a=[1,2,3]
for i in a:
    print(i)
# 输入空行触发执行

方案2:解析用户输入中的转义字符

如果必须让用户输入带\n、\t的字符串,可以手动解析这些转义字符,将其转换为实际的换行、制表符:

while True:
    order = input('Enter code ')
    # 将字符串中的转义字符解析为实际控制字符
    parsed_code = order.encode().decode('unicode_escape')
    exec(parsed_code)

此时用户输入a=[1,2,3]\nfor i in a:\n\tprint(i),parsed_code会自动把\n转成换行,\t转成制表符,exec就能正常执行。

重要注意事项

绝对不要在生产环境或面向未知用户的程序中使用exec()执行用户输入的代码,这会导致严重的安全风险——恶意用户可以输入删除文件、窃取数据等危险代码,完全控制你的系统。该方式仅适合本地学习测试场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:15:37