将Python变量转储到另一个文件中

时间:2017-04-21 19:49:44

标签: python file variables global dump

我想做类似于此处概述的事情:

github issue

但是我相信我没有从变量file.foo获得输出,因为foo没有在file.py中明确定义。 Foo是一个从readfile创建的矩阵数组。 file.py将readfile中的值附加到foo,因此file.py必须独立运行才能定义foo。

因此,我想知道是否有办法将python变量的定义转储到我稍后可以调用的某个位置。我的另一种选择是将此变量转储到txt文件,我真的不想这样做以避免无关的文件创建和其他复杂情况。

编辑:

这就是我所拥有的:

color_matrices = Full_Layout(array=org_arr, resolution=1)

def Globalize_RPF():
     global color_matrices

然后我试图在我当前的pyfile中调用color_matrices,如下所示:

 from ThreeD_Core_Distribution import color_matrices
 RPF = color_matrices
 print(RPF)

1 个答案:

答案 0 :(得分:0)

我发布了这个答案,但我不太确定我是否理解你的问题。您提到了这个问题:Global Variable from a different file Python

  

但是我认为我没有从变量file.foo获得输出,因为foo中没有明确定义file.pyfoo是从readfile创建的矩阵数组。

您提到file.foo未在file中明确定义。我从您的陈述中理解的是,foo生活在file模块中的另一个对象中。因此,为了获得foo,您需要通过该对象获取它:

import file 
file.object.foo

或:

import file *
object.foo
  

file.py将读取文件中的值附加到foo,因此file.py必须独立运行以定义foo

您基本上会导入file模块,以便附加readfile中的值。因此,在file中,您将打开readfile以将其值附加到foo,这基本上是filefile.foo的对象。

我只希望得到你所问的问题。

修改:

假设您发布的代码位于名为file的模块文件中:

color_matrices = Full_Layout(array=org_arr, resolution=1)

def Globalize_RPF():
    global color_matrices

color_matrices是全球性的,因为它是在模块的顶层分配的。 global color_matrices函数中的此语句Globalize_RPF将声明您打算更改全局变量color_matrices

def Globalize_RPF():
    color_matrices = Full_Layout(array=org_arr, resolution=1)  # Local to function, you cannot use `file.foo` after importing `file` module  

以这种方式分配时,color_matrices是函数的本地。那是什么意思?这意味着变量不能在函数外部访问。因此,即使您尝试在color_matrices模块中的函数之后使用file,它也无法正常工作。

color_matrices = Full_Layout(array=org_arr, resolution=1)      # Top-level assignment, global var

def Globalize_RPF():
    # process color_matrices

现在color_matrices是一个全局变量,您可以在函数,类,表达式和许多其他地方的file模块中使用它,您可以在{}中的任何位置引用该变量{1}}因为它的全球现在。因为file现在是全局的而不是函数内的局部变量,所以我们可以通过导入color_matrices来获取其值,如下所示:

file

如果您需要将 from file import color_matrices RPF = color_matrices print(RPF) 重新分配给该功能内的新结果,请使用color_matrices关键字:

global

如果您仅在功能正文中使用def Globalize_RPF(): global color_matrices color_matrices = ... # Changes global color_matrices ,则只需创建该功能的本地color_matrices = ...,即可影响/覆盖{{1}全局范围,即在模块顶部分配的范围。