2016-07-25 2 views
2

Я отлаживаю код python (python2.7.12), так как мой код работает, но я получаю NULL для всех переменных при потоковой передаче твитов в базу данных.Исключение AttributeError: объект «NoneType» не имеет атрибута «путь» в

Ошибка у меня есть:

Exception AttributeError: "'NoneType' object has no attribute 'path'" in <function _remove at 0x10068f140> ignored 

Я предполагаю, что эту ошибку из кода ниже:

def put_tweets_in_database(tweets): 
    print "putting tweets in database" 
    errors = 0 
    count = 0 

    for tweet in tweets: 
     try: 
      commit_tweet_to_database(tweet, count, len(tweets)) 
      count += 1 
     except Exception as e: 
      print e 
      session.rollback() 
      errors += 1 
    print 'there were {} errors'.format(errors) 

Я не думаю, что функция commit_tweet_to_database() не так ...

У вас есть идея ...? Буду признателен за любую помощь!

Спасибо.

+0

Я уверен, что в контексте нет определенного пользователем '_remove', не было номера строки для ошибки, и исключение возникает между итерациями цикла. Поэтому я подозреваю, что это имеет какое-то отношение к итератору цикла, возможно, к Python. –

+0

Примечание: Ошибка возникает только для меня, когда вы переходите через код с помощью 'pdb' (не указано рифмы). –

ответ

0
Exception AttributeError: "'NoneType' object has no attribute 'path'" in <function _remove at 0x10068f140> ignored 

Это говорит о том, что в функции _remove атрибут path был пытался получить доступ на NoneType объекта. NoneType Объекты не имеют атрибутов. Возможно, вам нужно взглянуть на функцию _remove и начать отлаживать оттуда.

-1

У меня такая же ошибка, и вот мой случай:

браузер = webdriver.Firefox()

browser.get ('http://www.google.com')

печати browser.title

  • следующее сообщение предоставит мне сообщение об ошибке: объект «NoneType» не имеет атрибута «путь»

browser.quit()

  • это следующий не даст ошибку

browser.close()

Так что вопрос в том, что вы должны использовать неправильный метод для объекта!

+0

close() отличается тем, что quit() ... вы не можете просто обменять их –

2

Я также рассматриваю эту ошибку. Я попытался использовать метод browser.close(), и хотя он останавливает объект - «NoneType» не имеет атрибута «путь» - из отображаемого я оставляю кучу открытых экземпляров браузера Firefox.

Метод .close() закрывает хром и не вызывает ошибку NoneType в firefox, но он оставляет Firefox открытым. Метод .quit() закрывает оба браузера, но он выдает ошибку для firefox.

Я использую класс StaticLiveServerTestCase класса django для своего кода.

Я написал небольшой цикл отладчика, чтобы проверить все. Просто раскомментируйте и закомментируйте выражения .quit() и .close().

class BaseTestCase(StaticLiveServerTestCase): 

    @classmethod 
    def setUp(self): 

     self.firefox = webdriver.Firefox() 
     self.chrome = webdriver.Chrome() 
     self.browsers = [self.firefox, self.chrome] 

    @classmethod 
    def tearDown(self): 

     for browser in self.browsers: 
      if browser == self.firefox: 
       print('firefox') 
       browser.close() 
       # browser.quit() 
      elif browser == self.chrome: 
       print('chrome') 
       browser.close() 
       # browser.quit() 

Я до сих пор не знаю ответа, но я думаю, что это шаг в правильном направлении.

+0

Теперь мне интересно, на самом ли самом деле отвечает @Dung и я. – Pat

+0

На самом деле это не ответ на исходный вопрос ... хотя это исключение из модуля Python Selenium 3.x, из selenium.browser.quit(). – RVT

+0

close() отличается тем, что quit() ... вы не можете просто обменять их –

0

Звучит так: хотя предложение «try» не работает, в результате чего исключение будет напечатано? Вероятно, я добавлю дополнительную отладку в catch Exception, например, распечатывая аргументы в файле commit_tweet_to_database, чтобы убедиться, что вы передаете жизнеспособные параметры.