如何借助外部文件实现print("{}")的内容输出?代码无报错但结果不符问题排查
问题分析与解决方案
你的代码没报错但没达到预期,核心问题出在这几个地方:
1. readlines()的返回值与条件判断错误
readlines()会把文件内容按行拆分成字符串列表,比如你的Filename.txt只有一行内容,data的实际值是['print("Hello world")\n'](末尾带有换行符)。你现在判断"print({})" in data,是在检查这个精确字符串是否是列表中的某一项——但你的文件里是print("Hello world"),完全不匹配,所以这个条件永远为False,里面的print语句根本不会执行,自然没有输出。
2. 文件打开模式冗余
你用的"tr"模式里,t是文本模式的默认值,没必要显式写,直接用"r"(只读文本模式)就够了。
针对需求的解决方案
看你的描述,你应该是想要么打印文件里的内容,要么执行文件里的Python代码,分两种情况给你方案:
情况一:单纯打印文件里的内容
如果只是想把Filename.txt里的内容显示出来,不需要执行代码,直接读取整个文件内容打印即可:
with open("Filename.txt", "r") as f: file_content = f.read() print(file_content)
执行后会输出:
print("Hello world")
情况二:执行文件里的Python代码
如果你想让文件里的print("Hello world")真正执行并输出Hello world,可以用exec()函数运行读取到的代码:
with open("Filename.txt", "r") as f: code_to_run = f.read() exec(code_to_run) # 执行文件中的Python代码
执行后会直接输出:
Hello world
额外提示:如果你想匹配特定格式的print语句
如果你的需求是找到文件里类似print(...)的语句并处理,可以先读取整个内容,再用字符串查找或正则匹配:
import re with open("Filename.txt", "r") as f: content = f.read() # 匹配所有print(...)形式的语句 print_statements = re.findall(r'print\(.*?\)', content) for stmt in print_statements: print(stmt) # 或者执行stmt:exec(stmt)
内容的提问来源于stack exchange,提问作者CodeShed
相关产品推荐
相关产品推荐

