2015-01-19 2 views
3

Ниже config.py:питона глобального имя «коллекция» не определена даже я импортировал коллекции

from collections import OrderedDict 
def test_config(fileName): 
    tp_dict = collections.OrderedDict() 
    with open("../../config/" + fileName, 'r') as myfile: 
     file_str = myfile.read().replace(' ', '').split('\n') 
    tp_list = [] 
    for i, x in enumerate(file_str): 
     x = x.strip() 
     try: 
      key = x[:x.index(':')].strip() 
      value = x[x.index(':')+1:] 
      if key == 'testpoint': 
       pass 
      else: 
       tp_dict[key] = value.strip().split(',') 
     except ValueError,e: 
      pass 
     if i % 4 == 0 and i != 0: 
      tp_list.append(tp_dict.copy()) 
    return tp_list 

Я использую функцию в другом файл test.py:

import config 
a = config.test_config('test.txt') 

NameError: global name 'collections' is not defined 

Но если я скопирую весь код из config.py в начало test.py, а затем воспользуюсь функцией, то у меня нет ошибки (см. Код ниже). Может ли кто-нибудь объяснить это мне, пожалуйста? Я так так смущен. Большое спасибо!

""" 
This is test.py 
""" 
from collections import OrderedDict 
def test_config(fileName): 
    tp_dict = collections.OrderedDict() 
    with open("../../config/" + fileName, 'r') as myfile: 
     file_str = myfile.read().replace(' ', '').split('\n') 
    tp_list = [] 
    for i, x in enumerate(file_str): 
     x = x.strip() 
     try: 
      key = x[:x.index(':')].strip() 
      value = x[x.index(':')+1:] 
      if key == 'testpoint': 
       pass 
      else: 
       tp_dict[key] = value.strip().split(',') 
     except ValueError,e: 
      pass 
     if i % 4 == 0 and i != 0: 
      tp_list.append(tp_dict.copy()) 
    return tp_list 
a = test_config('test.txt') 

ответ

0

Вы не импортировали имя collections, но только имя OrderedDict. Из-за этого вам просто нужно использовать bla = OrderedDict() вместо имени модуля.

1

Вы не импортируете коллекции, вы импортируете только из коллекций. Просто напишите OrderedDict вместо collections.OrderedDict.

+0

Вы правы. Но почему он не жалуется на ошибку в test.py? – Catherine

5

from collections import OrderedDict - import collections.