0

data_file.py --> 以下是data_file.py的内容

numbers = [1,2,3,4,5]

alpha = ['a','b','c','d','e']

D_num_alpha = dict(zip(numbers,alpha))

new_python.py

data_file = '/Users/user/desktop/data_file.py'
open(data_file,'r').read()
print numbers
>>>NameError: name 'numbers' is not defined

我正在尝试使用在 new_python.py 内部的 data_file.py 中制作的字典,但我只能将其读入字符串。

4

2 回答 2

3

鉴于您的数据文件是一个 python 脚本,那么您可能希望通过执行以下操作来导入它:

from data_file import numbers

print numbers

如果您尝试导入的 python 文件位于不同的目录中,则需要付出更多的努力,因为您必须执行以下操作:

更改代码以告诉 python 在哪里查找模块:

import sys
sys.path.append( "path to include directory")
from data_file import numbers

print numbers

__init__.py在与您要导入的文件相同的目录中创建一个名为的空文件。这告诉 python 你希望能够使用导入的文件夹。__init__.py您可以在此处的文档中阅读更多关于您为什么需要的信息。

请注意,您可能想告诉 python 如何从不同的目录导入一些不同的内容,请参阅此问题以获取更多信息。

您可能还想查看有关相对导入的 PEP

不需要任何eval()可能在以后引入问题的讨厌的方式。

于 2013-11-15T00:01:02.280 回答
2

如果您确信这两个脚本都不会被篡改,您可以使用eval().

您的代码如下所示:

data_file = '/Users/user/desktop/data_file.py'
eval(open(data_file,'r').read())
print numbers

编辑:另一种方法是将 data_file.py 作为模块导入。如果data_file.py/path/to/data

import sys
sys.path.append('/path/to/data')
import data_file

print data_file.numbers

这是一种更好的方法,除非您有特定原因不希望对整体进行data_file.py评估。

于 2013-11-14T23:58:08.370 回答