Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:有没有一种方法可以从另一个Python文件中永久更改变量?_Python_Python 3.x_File_Variables_Python 3.5 - Fatal编程技术网

Python:有没有一种方法可以从另一个Python文件中永久更改变量?

Python:有没有一种方法可以从另一个Python文件中永久更改变量?,python,python-3.x,file,variables,python-3.5,Python,Python 3.x,File,Variables,Python 3.5,有没有一种方法可以永久地更改变量,使其在代码完成时不会重置?我有以下代码: variables.py: myvar = None Main.py: import variables variables.myvar = True 获取_variable.py: import variables print(variables.myvar) 输出: None 我希望它打印True您可以更改文件: fin = open("path-to-variables.txt",&qu

有没有一种方法可以永久地更改变量,使其在代码完成时不会重置?我有以下代码:

variables.py:

myvar = None
Main.py:

import variables
variables.myvar = True
获取_variable.py:

import variables
print(variables.myvar)
输出:

None

我希望它打印
True

您可以更改文件:

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

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

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

然后在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 WRITER: 由于您在OpenOffice中使用Raspberry pi编写所有这些内容,并且自己创建json文件时遇到困难(OpenOffice假定它是一个编写器文档),因此您可以简单地允许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应该创建有问题的文件,除非它被告知在一个不存在的目录中创建它(因此,如果目录“myfolder”不存在,您不能说open(“myfolder/variables.json”,“w”)。您可以运行此命令一次以初始化json文件,然后从那里继续打开和关闭。

“是否有方法永久更改变量,以便在代码完成时不会重置?”否,代码完成时变量不再存在。通常,您谈论的是数据持久性。这可以通过简单的文件来实现,但可能意味着对某个数据库服务器进行一些查询。将所有随机的不相关变量放在一个文件中是一个坏主意。你可能不需要重新思考你的策略。juanpa.arrivillaga你能解释一下吗?你可以,但你不应该使用.py文件来实现变量持久性。哎呀,我希望你刚才删除的文件中没有其他内容……来吧。显然,您会对每个变量使用单独的文件。:)我早就说过了,我的意思是它可能会起作用。但这不是最优雅的方式。从技术上讲,如果要修改变量,就不应该从文件中存储变量。它不会另存为.json,我输入variables.json作为名称,因为下拉列表中没有json,它会另存为variables.json.otdt这对我来说是新的。如何运行python代码?什么的下拉列表中没有json?你导入json了吗?LibreOffice Writer,我正在树莓圆周率上使用HATs。啊,我将补充我的答案。
import json

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

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