python - 如何从 txt 文件(包含代码)中读取行并确定它是否正确?
问题描述
文本文件包含 Python 代码。
我的任务是编写一个程序来检查它是否可以在 python 中运行。我不知道如何检查 python 中的行是否正确。我可以从文本文件中读取行,但仍然不知道如何确定当前行是否会在没有任何错误消息的情况下运行。如果它会运行程序打印True
,否则False
。
lst=[]
with open("be.txt","r") as be:
for line in be:
lst.append(line.strip("\n"))
例如:一行是:" for i in range(8:
"
结果应该是False
,因为缺少这个 ")"。
解决方案
使用exec
和捕获异常。exec
将尝试将该行作为 Python 代码执行。如果成功,则执行该行并发生任何副作用(例如,创建新变量)。如果没有,则会引发异常,您可以跳过它并继续下一行。像这样的东西:
lst=[]
with open("be.txt","r") as be:
for line in be:
try:
exec(line)
lst.append(line.strip("\n"))
except:
pass
请注意,如果一行不是完整的 Python 语句,这将不起作用。例如。如果您有一个函数def
或多for
行循环,则必须exec
一次全部完成才能成功。
推荐阅读
- mapbox - Mapbox GL-JS:向多边形添加图案
- swift - 使用 IBAction 按钮计算用户登录尝试
- node.js - 从外部文件导出函数不起作用
- django - Django:根据来自其他表的 incerted 值填充表
- javascript - React HOC 上的打字稿
- reactjs - 使用 react-material-ui 关闭全屏对话框后,OnClick 侦听器不起作用
- python - 如何使用 request 和 bs4 模块而不使用 Virustotal 的 PublicAPI 在 Virustotal 上获得文件哈希的声誉?
- javascript - 从 gapi 调用 grantOfflineAccess 方法时,Google OAuth 始终显示同意屏幕
- r - 如何通过 shinyheatmaply 部署交互式热图
- python - 使用月份日期时间合并多个数据框