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

如何用Python执行文件中的代码行并获取执行输出?

如何读取文件中的代码行并执行获取结果?

我想要读取文件中的一行内容并交给Python执行,然后获取输出结果。例如,我在文件new.txt中写入了以下内容:

a = 0
b = 10
c = 100
a == b-10 and b== c-100

我希望用类似这样的Python代码实现:

file = open("new.txt")
run(file[0])
run(file[1])
run(file[2])
print(out(file[3]))

并且希望最后一行代码能输出True,请问有什么实现思路吗?


嘿,这个需求其实可以用Python自带的exec()和eval()函数轻松实现,我给你拆解下思路和具体代码:

核心思路

Python原生支持执行字符串形式的代码:

  • exec():用来执行赋值语句、循环、函数定义这类没有返回值的代码块;
  • eval():用来计算表达式(比如你最后一行的判断语句),并返回计算结果。

如果想模拟你想要的run()和out()函数,我们还可以用一个自定义的字典来隔离变量,避免污染全局环境。

具体实现方案

方案1:简洁版(直接执行)

先读取文件所有行,过滤空行后,用exec()执行前几行赋值,最后用eval()计算表达式:

# 用with语句自动管理文件,避免忘记关闭
with open("new.txt", "r") as f:
    # 读取每行并去除首尾空白,过滤空行
    lines = [line.strip() for line in f if line.strip()]

# 执行前3行的赋值语句
for line in lines[:-1]:
    exec(line)

# 计算最后一行的表达式并打印结果
result = eval(lines[-1])
print(result)  # 输出:True

方案2:封装成你想要的run/out函数

如果你偏好更贴近你示例的写法,可以封装两个函数,用自定义命名空间来管理变量:

# 自定义命名空间字典,专门存储执行代码后的变量,不影响全局变量
code_namespace = {}

def run(code_line):
    """执行一行赋值类代码"""
    exec(code_line, code_namespace)

def out(expr_line):
    """计算一行表达式并返回结果"""
    return eval(expr_line, code_namespace)

# 读取文件内容
with open("new.txt", "r") as f:
    lines = [line.strip() for line in f if line.strip()]

# 按照你期望的方式调用
run(lines[0])
run(lines[1])
run(lines[2])
print(out(lines[3]))  # 输出:True

重要注意事项

  • 安全风险:exec()和eval()会执行任意字符串代码,如果你的new.txt文件内容来自不可信来源(比如用户上传、网络获取),可能会被注入恶意代码(比如删除文件、窃取数据),务必谨慎使用!
  • 空行处理:代码里加入了if line.strip()来过滤空行,避免执行空字符串导致的语法错误;
  • 命名空间隔离:用自定义的code_namespace字典,可以避免修改全局变量,让代码更安全、更可控。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:05:02