【问题标题】:Using variables from another python file into my current file将另一个 python 文件中的变量使用到我当前的文件中
【发布时间】:2019-10-23 09:19:19
【问题描述】:

我正在尝试从 python 文件中获取一个字符串变量并在另一个 python 文件中使用它。即使我可以打印它,它似乎也无法识别新导入的变量。

我正在运行 python 3.6.4。如果我手动编写字符串,代码会运行并且不会进入异常。

变量名.py

first='equilibrium'

file2.py

import variable_name

print(variable_name.first)

try:
    input.variable_name.first.get()
    variable_name.first = input.variable_name.first
except:
    print("The equilibrium IDS is absent from the input datafile")
    print("----> Aborted.")
    exit()

如果我尝试手动设置“平衡”,则代码不会进入异常。但是,如果我从 variable_name.py 中读取它,它会给我一个例外。

【问题讨论】:

  • input.variable_name.first.get() - 你到底想在这里做什么?因为它没有任何意义。
  • 我正在尝试检索“平衡”树结构并将其保存在一个名称下,为了保持一致性,我也将其称为平衡
  • 当我使用 input.equilibrium.get() 运行代码时,代码可以工作,但我不知道为什么当我使用第一个文件中保存在变量中的字符串 'equilibrium' 时,它给了我一个异常
  • input 是您代码中其他地方定义的对象吗?如果是这样,您不应该这样做,因为您正在覆盖内置的 input 函数。但更重要的是,您应该分享这一点,因为有必要重现您所看到的特定问题。如果看起来真正的问题是使用变量作为属性名称,请查找getattr
  • 问题是我的代码在集群上,并且有几个模块正在运行,包括“输入”定义,因此您无法重现错误。我的问题不在于代码本身,因为正如我所说,当我将“平衡”直接放入第二个文件时,它运行得非常好。我的总体目的是制作另一个包含变量列表的简单 python 文件。 'first='equilibrium'' 等变量的值将由用户替换,以便更轻松地运行大约 600 行的主代码。

标签: python file input import


【解决方案1】:

您是否对值和变量感到困惑?当您将值分配为字符串时,它不被视为变量名,编译器不会像您理解的那样理解。 例如,您正在尝试实现以下目标:

hello = 1
x = 'hello'
print (x)

你期望的结果是1,当然它会在这里写hello

你可以在这里做的是

变量名.py

equilibrium = 'smth'

file2.py

import variable_name

print(variable_name.equilibrium)
try:
    input.variable_name.equilibrium.get()
    variable_name.equilibrium = input.variable_name.equilibrium
except:
    print("The equilibrium IDS is absent from the input datafile")
    print("----> Aborted.")
    exit()

【讨论】:

  • 我明白你在说什么,但创建 variable_name 文件的重点是让用户可以输入任何 IDS 名称而不是平衡名称,例如 core_profiles。
  • 好的,您应该接受用户无法通过设计更改变量名称,它可能只会更改变量的值。变量名称应由硬编码器(您)命令。多想一下,您会找到更好的方式向最终用户表达您的代码。或者您可以将自述文件放在 variable_name.py 中,用户可以使用值定义自己的变量,您可以setattr 变量并在您的代码中使用。
猜你喜欢
  • 2013-01-12
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
相关资源
最近更新 更多