【问题标题】:How to get function value from txt file with exec Python [duplicate]如何使用exec Python从txt文件中获取函数值[重复]
【发布时间】:2022-02-05 18:12:59
【问题描述】:

我想从 txt 文件中执行 python 代码并存储它。

在 txt 文件中我有这个代码:

def func(a):
    return a

在python中:

def random_file_input(file_name):
    ran_number = random.randint(0, 100)
    with open(file_name, 'r+') as f:
        data = f.read()
        f.write(f"\nfunc({ran_number})")
        a = exec(data)  #-----> i want to store like this  :( 

random_file_input('python_code.txt') ```

【问题讨论】:

标签: python function file exec python-exec


【解决方案1】:

.txt 文件示例:

def hello():
    print("Hello")

首先你需要从 .txt 文件中读取需要的部分 python 代码

>>> with open("better.txt", 'r+') as f:
...     data = f.read()

然后作为python代码执行

>>> exec(data)

现在,如果您知道函数的名称,您就可以从 .txt 文件中调用函数并将结果存储在变量中

>>> b = hello()
>>> print(b)
Hello

exec()

Documentation 说:这个函数支持Python代码的动态执行。 object 必须是字符串或代码对象。如果它是一个字符串,则该字符串被解析为一组 Python 语句,然后执行(除非出现语法错误)。如果是代码对象,则直接执行。

但正如this 回答中提到的那样,它不安全

【讨论】:

  • 我在编辑器中尝试过,但它返回错误。 ``` def random_file_input(file_name): ran_number = random.randint(0, 100) with open(file_name, 'r+') as f: data = f.read() f.write(f"\ntinki({ran_number} )") exec(data) a = hello() random_file_input('python_code.txt') ``` NameError: name 'hello' 未定义。您的意思是:“帮助”?
  • 您是否在 .txt 文件中定义了 hello() 函数?
  • 是的,但编辑不喜欢它。 NameError: name 'hello' 未定义。
  • 仅在编辑器中出错,而不是在执行时出错?因为如果是这样,编辑器并没有任何关于hello()函数声明的信息,所以它会将其标记为NameError但会运行良好。
  • 执行时不返回错误。让我解释一下我想要做什么。任务是创建一个函数,该函数将从 txt 文件中读取另一个函数。第一个函数应该将参数传递给第二个函数并检查结果是否大于 50。
猜你喜欢
  • 2019-02-28
  • 2018-11-12
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多