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

为何exec()报错‘参数必须是字符串、字节或代码对象’?

解决exec()传入文件对象报错的问题

你碰到的这个错误和文件路径完全没关系,核心问题是exec()不接受文件对象作为参数。open()函数返回的是一个文件对象,而exec()要求传入的必须是字符串、字节或者代码对象,所以不管你路径写得对不对,加不加r前缀,都会报这个错。

正确写法

直接读取文件内容后传给exec():

# 基础写法
exec(open('test.txt').read())

更推荐用with语句,能自动关闭文件,避免资源泄漏:

with open('test.txt', 'r', encoding='utf-8') as f:
    exec(f.read())

如果用Python 3.4+,也可以用pathlib模块更简洁地读取文件:

from pathlib import Path
exec(Path('test.txt').read_text(encoding='utf-8'))

为什么之前可能能用?

要是你之前用这种写法成功过,大概率是当时用的是Python 2版本——在Python 2里,文件对象可以直接被exec()处理,但Python 3已经移除了这个特性,必须显式读取文件内容。

确认路径是否正确(可选)

如果还是担心路径问题,可以先验证文件是否存在:

import os
print(os.path.exists('test.txt'))  # 输出True说明路径没问题

内容的提问来源于stack exchange,提问作者Marlon D. Alessandra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:20:18