在另一个 python 文件中使用从文件导入的 python 字典

Using python dict imported from file in another python file

我遇到了与 How to import or include data structures (e.g. a dict) into a Python file from a separate file 中 OP 提出的相同问题。但是由于某种原因我无法让它工作。

我的设置如下:

file1.py:

TMP_DATA_FILE = {'a':'val1', 'b':'val2'}

file2.py:

from file1 import TMP_DATA_FILE

var = 'a'
print(TMP_DATA_FILE[var])

当我这样做并且 运行 命令行中的脚本时,它说字符串索引必须是整数。

当我执行 type(TMP_DATA_FILE) 时,我得到 class 'str'。我试图将其转换为 dict 以便能够使用 dict 操作,但无法使其正常工作。

如果我这样做 print(TMP_DATA_FILE.get(var)),因为我正在使用 PyCharm 进行开发,它会列出 get()、keys()、items()、fromkeys() 等字典操作,但是当我 运行 来自命令行的程序它说 'str' 对象没有属性 'get'.

当我执行 print(TMP_DATA_FILE) 时,它只列出 'val1'。它没有列出 'a'、'b'、'val2'.

然而,当 运行 来自 PyCharm 时,相同的脚本可以正常工作。只是当我 运行 来自命令行的脚本作为一个单独的解释器进程时,它会给出这些错误。

我不确定是 PyCharm 导致错误还是我做错了什么。

最初我在 dict 变量中只有一个 key:value 并且它起作用了,当我添加新的 key:value 对时它开始给出这些错误。

我也尝试过使用 ast.literal_evaleval,但都没有用。不确定我哪里出错了。

非常感谢任何帮助。

谢谢。

你叫错了。应该是这样的:

print file1.TMP_DATA_FILE[var]

正确的变体:

import file1    
var = 'a'
print(file1.TMP_DATA_FILE[var])

from file1 import TMP_DATA_FILE
var = 'a'
print(TMP_DATA_FILE[var])

有两种方法可以访问文件 file1.py 中的变量 TMP_DATA_FILE:

import file1
var = 'a'
print(file1.TMP_DATA_FILE[var])

或:

from file1 import TMP_DATA_FILE
var = 'a'
print(TMP_DATA_FILE[var])

在这两种情况下,file1.py 必须位于 python 搜索路径中包含的目录中,或者与导入它的文件位于同一目录中。

检查 this answer 关于 python 搜索路径。

如果您在项目中创建了 package,则必须 link 来自主项目的文件。

例如:
如果您有一个文件夹 Z,其中包含 2 个文件夹 AB,并且这 2 个文件 file1.pyfile2.py 存在于 AB个文件夹,那么就得这样导入

import Z.A.file1
print(file1.TMP_DATA_FILE)