使用从另一个python文件

时间:2015-06-17 14:00:47

标签: python dictionary python-3.4

我和OP在How to import or include data structures (e.g. a dict) into a Python file from a separate file中提出的问题相同。但由于某种原因,我无法让它发挥作用。

我的设置如下:

file1.py:

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

file2.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进行开发,它会列出dict操作,如get(),keys(),items(),fromkeys()等,但是当我运行程序时从命令行它说' str'对象没有属性' get'。

当我print(TMP_DATA_FILE)时,它只会列出' val1'。它没有列出' a'''''' val2'

然而,从PyCharm运行时相同的脚本没有任何问题。只是当我从命令行运行脚本作为单独的解释器进程时,它会给出这些错误。

我不确定PyCharm是否会导致错误,或者我是否做错了。

最初我只有一个键:dict变量中的值,当我添加了新的key:value对,当它开始提供这些错误时,它就起作用了。

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

任何帮助都将受到高度赞赏。

感谢。

4 个答案:

答案 0 :(得分:4)

您可以通过两种方式访问​​文件TMP_DATA_FILE中的变量file1.py

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搜索路径的信息。

答案 1 :(得分:2)

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

例如:
如果您的文件夹Z包含2个文件夹AB,那么file1.pyfile2.pyA中存在{2}个文件{1}}文件夹,然后你必须以这种方式导入

B

答案 2 :(得分:1)

你称之为错误的方式。它应该是这样的:

print file1.TMP_DATA_FILE[var]

答案 3 :(得分:1)

正确的变体:

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

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