【问题标题】:Python: is there a way to permanently change a variable from another Python file?Python:有没有办法从另一个 Python 文件中永久更改变量?
【发布时间】:2020-11-16 16:35:18
【问题描述】:

有没有办法永久更改变量,使其在代码完成时不会重置?我有这个代码:

变量.py:

myvar = None

Main.py:

import variables
variables.myvar = True

Get_variable.py:

import variables
print(variables.myvar)

输出:

None

我希望它打印True

【问题讨论】:

  • “有没有办法永久更改一个变量,所以代码完成时它不会重置?” 不,代码完成后变量不再存在。通常,您在谈论数据持久性。这可以通过像文件这样简单的东西来实现,但可能意味着对某个数据库服务器进行一些查询。
  • 将所有随机不相关的变量放在一个文件中是一个坏主意。您可能会想重新考虑您的策略。
  • juanpa.arrivillaga 你能解释一下吗?

标签: python python-3.x file variables python-3.5


【解决方案1】:

您可以更改文件:

fin = open("path-to-variables.txt","a")
fin.write("myvar = True")

这应该会改变实际的文件。

【讨论】:

  • 可以,但你不应该使用 .py 文件来实现变量持久性。
  • 哎呀,我希望你刚刚擦除的文件中没有其他内容......
  • 来吧。显然,您将为每个变量使用单独的文件。 :)
  • 我说的比较早,我的意思是可能
  • 它应该可以工作。但是,是的,这不是最优雅的方式。从技术上讲,如果要修改变量,则不应将它们存储在文件之外。
【解决方案2】:

我不相信这是可能的(无需在第二个脚本中重写整个 python 脚本以将整个内容写回文件),但还有另一种方法可以做到这一点。您可以将变量存储在另一种类型的文件中,而不是将变量存储在 python 脚本中,例如 json.你可以有“variables.json”:

{ "myvar": null }

然后在你的 python 中:

import json         # import the json library

with open("variables.json", "r") as f:      # read the json file
  variables = json.load(f)

myvar = variables["myvar"]    # To get the value currently stored

variables["myvar"] = True    # change the variable in python

with open("variables.json", "w") as f:      # write back to the json file
  json.dump(variables, f)

如果你有很多变量,你可以将它们全部存储在 json 中,就像使用字典一样:

{ "onevar": null,
  "twovar": "kittens",
  "redvar": "foo",
  "bluevar": "bar" }

对于 OPENOFFICE 作家: 由于您是在 Raspberry pi 上的 OpenOffice 中编写所有这些内容,并且自己无法创建 json 文件(open office 假定它是一个编写器文档),您可以简单地允许 python 创建它:

import json

variables = { "onevar": null,
              "twovar": "kittens",
              "redvar": "foo",
             "bluevar": "bar" }

with open("variables.json", "w") as f:
  json.dump(variables, f)

如果告诉 python 打开一个要写入的文件,但该文件不存在,python 应该创建有问题的文件,除非它被告知在不存在的目录中创建它(所以,你不能' t 说 open("myfolder/variables.json", "w") 如果目录“myfolder”不存在)。您可以运行一次来​​初始化您的 json 文件,然后从那里继续打开和关闭。

【讨论】:

  • 它不会保存为.json,我输入 variables.json 作为名称,由于下拉列表中没有 json,它保存为 variables.json.otd
  • 这对我来说是新的。你是如何运行python代码的?什么下拉列表中没有json?你导入 json 了吗?
  • LibreOffice Writer,我在 Raspberry Pi 上使用 HAT。
  • 啊,我会补充我的答案。
猜你喜欢
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 2023-02-07
  • 2018-05-19
  • 1970-01-01
  • 2019-12-05
相关资源
最近更新 更多