【问题标题】:Python 3.7 - Save and import a file holding Python variablesPython 3.7 - 保存和导入包含 Python 变量的文件
【发布时间】:2020-02-02 13:28:44
【问题描述】:

这似乎是一个非常明显/愚蠢的问题,但有一些规范使这变得更加困难。

假设我有一个程序,它从用户那里获取 3 个数字,并对它们进行数学处理以获得输出。然后我open("file", "r") 将这些变量写入文件。

然后,假设另一个程序然后imports 它们并将它们用于其他进程。我需要能够将 file 作为 Python 代码导入。明确一点:我没有保存文本,我将 python 代码保存到一个不是 .py 文件的文件中。

有没有办法在非.py 文件中保存和导入 Python 代码?怎么做?

编辑:在我保存和导入的文件中,我还保存了 Python 函数。我不能简单地保存变量本身;我需要将变量名称、值和 python 函数保存为文件中的普通文本,但是当我导入文件时,它应该被解析为 Python 代码。

【问题讨论】:

  • 不要将结果保存为 python 文件。使用一些最适合的文件格式。
  • "I am not saving text, I am saving python code to a file that is not a .py file." 但是,为什么?使用pickle,甚至是普通的json。不要保存python代码,保存数据。
  • @Daniel 这就是我的意思,想象程序输出number1=10 number2=20 number3=30,我想将确切的python代码保存到非python文件中,但是在运行时将其导入,就好像它是普通的python代码。
  • 使用一些不是 python的格式,例如JSON:{"number1": 10, "number2": 20}。这可以通过json.dumpjson.load 轻松保存和阅读。
  • @Daniel 抱歉,我不确定我是否清楚。我想将 python 代码保存到一个非 python 文件中,然后将该非 python 文件作为 python 代码导入。该文件不是.py 文件,但它包含导入时应在程序中解析为python 代码的python 代码。编辑:刚刚看到您编辑的评论,我现在就查看json

标签: python python-3.x python-import python-3.7


【解决方案1】:

将计算结果存储为代码然后从其他地方导入可能不是一个好主意。您应该使用适当的数据格式来存储结果 - 并将其作为数据导入。使用 JSON 或 pickle 等。

但是,如果您确实想在脚上开枪,Python 为您提供了执行此操作的工具:

假设我在文件temp.txt中有一些代码

number3=30

def f():
    return 'method'

那么你可以这样做:

with open('temp.txt') as f:
    code = f.read()
    exec(code)

print(number3)
print(f())

哪些输出:

30
method

【讨论】:

  • 我意识到这是一件很愚蠢的事情,但无论如何,谢谢你的回答。正是我想要的(即使它不是最聪明的做事方式)
【解决方案2】:

如果我做对了,这可以通过 eval 函数来完成,例如您将所有要执行的代码保存到一个字符串中,然后保存到一个文件中。

当您需要执行读取文件时,获取字符串并对其进行评估

但是我必须说,使用 eval 是一种糟糕(非常糟糕)的做法,我建议不要这样做,除非你找不到其他解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2019-01-17
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 2022-11-24
    • 2020-07-05
    相关资源
    最近更新 更多