在另一个 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_eval
和 eval
,但都没有用。不确定我哪里出错了。
非常感谢任何帮助。
谢谢。
你叫错了。应该是这样的:
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 个文件夹 A
和 B
,并且这 2 个文件 file1.py
和 file2.py
存在于 A
和 B
个文件夹,那么就得这样导入
import Z.A.file1
print(file1.TMP_DATA_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_eval
和 eval
,但都没有用。不确定我哪里出错了。
非常感谢任何帮助。
谢谢。
你叫错了。应该是这样的:
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 个文件夹 A
和 B
,并且这 2 个文件 file1.py
和 file2.py
存在于 A
和 B
个文件夹,那么就得这样导入
import Z.A.file1
print(file1.TMP_DATA_FILE)