python - 如何读取和执行文件中的脚本

标签 python

这是一个简化的示例,python程序在设备上运行并等待文本文件了解下一步如何执行,文本文件将频繁上传到设备。

如何让python程序将文本文件(在本例中,steps.txt只有一行"z = x + y")“翻译”成可执行脚本?

import os
import time
x = 3
y = 9
s = None
while 1:
  time.sleep(1)
  try:
    with open("steps.txt", 'r') as f:
        s = f.readline()#s = "z = x + y"
        f.close()
        break
except:
    pass

os.system(s)#'z' is not recognized as an internal or external command,operable program or batch file.

最佳答案

正如您在帖子中所包含的那样,命令提示符返回了此错误

'z' is not recognized as an internal or external command,operable program or batch file.

当您将字符串 "z = x + y" 传递给 os.system() 时。那是因为该命令未在 python 中运行。我相信你想做的是

# s = "z = x + y"
os.system(f'python -c "{s}"')

这当然会返回一个 NameError

相反,要执行 python 程序中的代码行,请使用 exec() 方法,如下所示:

# s = "z = x + y"
exec(s)

但请注意!两者 exec() and eval() should really be avoided ,因为它们会带来严重的安全问题。

注意:f.close() 不是必需的,因为您使用了 with 语句。

关于python - 如何读取和执行文件中的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69147840/

相关文章:

python - 从文本文件中检索变量值的最佳方法?

python - 在 Python 中动态生成函数树。

python - 从数据库中断中恢复 Celery

python - 如何使用Python中的lifetimes包获取客户生命周期的期望值

python - 在 Pandas Python 中形成组之前检查组是否包含元素

python - 使用鼠标悬停在 2D 点图上查找 numpy 数组中的行/位置

python - 尝试在 h5py : ValueError: Unable to set extend dataset (Dimension cannot exceed the existing maximal size 中扩展现有数据集时出错

python - 如何在 Python 中使用正则表达式删除右方括号?

python - 如何从 flask 端点返回纯文本?普罗米修斯需要

python - 在 python 中正确使用 isinstance