使用从另一个python文件中的文件导入的python dict

新手上路,请多包涵

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

我的设置如下:

文件 1.py:

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

文件2.py:

 from file1 import TMP_DATA_FILE

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

当我这样做并从 cmd 行运行脚本时,它说字符串索引必须是整数。

当我做 type(TMP_DATA_FILE) 时,我得到了“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 变量中只有一个键:值并且它起作用了,当我添加新的键:值对时它开始给出这些错误。

我也尝试过使用 ast.literal_eval & eval ,它们都没有用。不知道我哪里错了。

任何帮助将不胜感激。

谢谢。

原文由 Murali 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 697
2 个回答

您可以通过两种方式访问文件 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 搜索路径中包含的目录中,或与导入它的文件位于同一目录中。

检查 这个关于 python 搜索路径的答案

原文由 fferri 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您在项目中创建了 package s,那么您必须从主项目链接该文件。

例如:

If you have a folder Z which contains 2 folders A and B and those 2 files file1.py and file2.py 存在于 AB 文件夹中,那么你必须以这种方式导入它

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

原文由 Bharadwaj 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题