如何让Python读取并执行文本文件内存储的自定义脚本语句
报错原因
os.system() 的作用是调用操作系统的Shell执行系统命令,你传入的z = x + y是Python语法的赋值语句,不是系统可识别的命令,Shell会尝试把z当做可执行文件查找,自然会抛出找不到命令的报错。
正确实现方案
使用Python内置的exec()函数执行动态Python代码即可,它可以直接解析运行传入的Python语句,并且可以直接使用当前上下文里已经定义的变量(比如你代码里的x、y)。
修正后的完整代码
import time x = 3 y = 9 s = None while 1: time.sleep(1) try: with open("steps.txt", 'r') as f: s = f.readline().strip() # 去掉可能的换行、空格 break except: pass exec(s) # 可以打印验证结果 print(z) # 输出12
注意事项
- 用
with open语法打开文件时,结束后会自动关闭文件,不需要手动调用f.close(),原有代码里的手动关闭属于多余操作。 - 动态执行外部文件传入的代码存在安全风险,如果
steps.txt被恶意篡改写入非法代码,会直接被当前Python程序执行,操作敏感设备时请做好文件的合法性校验。
内容的提问来源于stack exchange,提问作者adameye2020
相关产品推荐
相关产品推荐

